| 1 | struct Test { |
| 2 | a ?[]int |
| 3 | b ?[]string |
| 4 | c ?[]f64 |
| 5 | d ?[][]string |
| 6 | } |
| 7 | |
| 8 | fn run_loop[U](val U, field_name string) []string { |
| 9 | mut out := []string{} |
| 10 | $for field in U.fields { |
| 11 | variable := val.$(field.name) |
| 12 | if field_name == field.name { |
| 13 | for element in variable { |
| 14 | println(element) |
| 15 | out << element.str() |
| 16 | } |
| 17 | } |
| 18 | } |
| 19 | return out |
| 20 | } |
| 21 | |
| 22 | fn test_main() { |
| 23 | test := Test{ |
| 24 | a: [1, 2, 3] |
| 25 | b: ['foo', 'bar'] |
| 26 | c: [1.2, 2.3] |
| 27 | d: [['foo'], ['bar']] |
| 28 | } |
| 29 | |
| 30 | // println(run_loop(test, 'a')) |
| 31 | assert run_loop(test, 'a').str() == "['1', '2', '3']" |
| 32 | assert run_loop(test, 'b').str() == "['foo', 'bar']" |
| 33 | assert run_loop(test, 'c').str() == "['1.2', '2.3']" |
| 34 | assert run_loop(test, 'd').str() == "['['foo']', '['bar']']" |
| 35 | } |
| 36 | |