123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- discard """
- output: '''
- a char: true
- a char: false
- an int: 5
- an int: 6
- a string: abc
- false
- true
- true
- false
- true
- a: a
- b: b
- x: 5
- y: 6
- z: abc
- a char: true
- a char: false
- an int: 5
- an int: 6
- a string: abc
- a string: I'm root!
- CMP false
- CMP true
- CMP true
- CMP false
- CMP true
- CMP true
- a: a
- b: b
- x: 5
- y: 6
- z: abc
- thaRootMan: I'm root!
- myDisc: enC
- c: Z
- enC
- Z
- '''
- """
- block titerator1:
- type
- TMyTuple = tuple[a, b: char, x, y: int, z: string]
- proc p(x: char) = echo "a char: ", x <= 'a'
- proc p(x: int) = echo "an int: ", x
- proc p(x: string) = echo "a string: ", x
- var x: TMyTuple = ('a', 'b', 5, 6, "abc")
- var y: TMyTuple = ('A', 'b', 5, 9, "abc")
- for f in fields(x):
- p f
- for a, b in fields(x, y):
- echo a == b
- for key, val in fieldPairs(x):
- echo key, ": ", val
- doAssert x != y
- doAssert x == x
- doAssert(not (x < x))
- doAssert x <= x
- doAssert y < x
- doAssert y <= x
- block titerator2:
- type
- SomeRootObj = object of RootObj
- thaRootMan: string
- TMyObj = object of SomeRootObj
- a, b: char
- x, y: int
- z: string
- TEnum = enum enA, enB, enC
- TMyCaseObj = object
- case myDisc: TEnum
- of enA: a: int
- of enB: b: string
- of enC: c: char
- proc p(x: char) = echo "a char: ", x <= 'a'
- proc p(x: int) = echo "an int: ", x
- proc p(x: string) = echo "a string: ", x
- proc myobj(a, b: char, x, y: int, z: string): TMyObj =
- result.a = a; result.b = b; result.x = x; result.y = y; result.z = z
- result.thaRootMan = "I'm root!"
- var x = myobj('a', 'b', 5, 6, "abc")
- var y = myobj('A', 'b', 5, 9, "abc")
- for f in fields(x):
- p f
- for a, b in fields(x, y):
- echo "CMP ", a == b
- for key, val in fieldPairs(x):
- echo key, ": ", val
- var co = TMyCaseObj(myDisc: enC, c: 'Z')
- for key, val in fieldPairs(co):
- echo key, ": ", val
- for val in fields(co):
- echo val
- block:
- type
- Enum = enum A, B
- Object = object
- case a: Enum
- of A:
- integer: int
- of B:
- time: string
- let x = A
- let s = Object(a: x)
- doAssert s.integer == 0
|