v / vlib / v2 / tests / generic_fn.v_
41 lines · 35 sloc · 757 bytes · 7519f915ffdafd3229fdd8912f7d78481614cb35
Raw
1module main
2
3fn main() {
4 // generic_fn_a[int](1, 'hello')
5 // generic_fn_b[int, string](1, 'hello')
6 // generic_fn_a(1, 'hello')
7 generic_fn_b(1, 'hello')
8 generic_fn_c(['foo'], {'a': 'apple', 'b': 'bananna'})
9 generic_fn_d(fn(int, string) {
10 println(1)
11 })
12 generic_fn_e(fn(int, fn(map[string]string) string) {
13 println(1)
14 })
15}
16
17// fn generic_fn_a[T](param_a T, param_b string) {
18// println(param_a)
19// println(param_b)
20// }
21
22fn generic_fn_b[T,Y](param_a T, param_b Y) {
23 a := []T{}
24 b := map[T]int{}
25 c := map[T]Y{}
26 dump(a)
27 dump(b)
28 dump(c)
29}
30
31fn generic_fn_c[T,Y](param_a []T, param_b map[Y]T) {
32 println(param_a)
33}
34
35fn generic_fn_d[T,Y](param_a fn(T, Y)) {
36 println(param_a)
37}
38
39fn generic_fn_e[T,Y]( fn(T, fn(map[Y]Y) Y) ) {
40 println(param_a)
41}
42