diff options
author | Araq <rumpf_a@web.de> | 2013-02-18 17:23:26 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-02-18 17:23:26 +0100 |
commit | d15981adbcfe507f58f3cc6167272d8af363bbf4 (patch) | |
tree | bac2792cc435641353050635bc6d9a8a84733732 /tests | |
parent | 8e9b39084c4ed378ef98d3e2d6cc958f976862b4 (diff) | |
download | Nim-d15981adbcfe507f58f3cc6167272d8af363bbf4.tar.gz |
system.fields|fieldPairs for objects
Diffstat (limited to 'tests')
-rw-r--r-- | tests/run/tfielditerator2.nim | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/run/tfielditerator2.nim b/tests/run/tfielditerator2.nim new file mode 100644 index 000000000..76fa568f2 --- /dev/null +++ b/tests/run/tfielditerator2.nim @@ -0,0 +1,64 @@ +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 +myDisc: enC +c: Z +enC +Z +''' +""" + +type + TMyObj = object + 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 + +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 a == b + +for key, val in fieldPairs(x): + echo key, ": ", val + +var co: TMyCaseObj +co.myDisc = enC +co.c = 'Z' +for key, val in fieldPairs(co): + echo key, ": ", val + +for val in fields(co): + echo val |