v2 / vlib / v / tests / generics / generics_method_chaining_call_test.v
32 lines · 26 sloc · 531 bytes · 4d74d7296a0a9c106cf5d104affc62f0435810fe
Raw
1struct Seq[T] {
2 ar []T
3}
4
5type MapFn[T, K] = fn (T) K
6
7fn (s Seq[T]) map[K](map_fn MapFn[T, K]) Seq[K] {
8 mut map_ar := []K{cap: s.ar.len}
9
10 for _, i in s.ar {
11 map_ar << map_fn[T, K](i)
12 }
13
14 return Seq[K]{map_ar}
15}
16
17fn test_generics_method_chaining_call() {
18 s := Seq[string]{['one', 'two']}
19 .map[int](fn (element string) int {
20 match element {
21 'one' { return 1 }
22 'two' { return 2 }
23 else { return -1 }
24 }
25 })
26 .map[int](fn (element int) int {
27 return element + 2
28 })
29
30 println(s)
31 assert s.ar == [3, 4]
32}
33