v2 / vlib / v / tests / generics / generics_fn_variable_1_test.v
33 lines · 26 sloc · 470 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1type Fn[T] = fn (x T, i int) T
2
3fn func[T](x T, i int, f_ Fn[T]) T {
4 return f_(x, i)
5}
6
7fn f1[T](x T, i int) T {
8 return x
9}
10
11fn test_generic_fn_variable() {
12 ff1 := f1[int]
13 ret1 := ff1(1, 11)
14 println(ret1)
15 assert ret1 == 1
16
17 ff2 := f2[int]
18 ret2 := ff2(1, 11)
19 println(ret2)
20 assert ret2 == 1
21
22 x1 := func[f64](2.0, 3, f1[f64])
23 println(x1)
24 assert x1 == 2.0
25
26 x2 := func[f64](2.0, 3, f2[f64])
27 println(x2)
28 assert x2 == 2.0
29}
30
31fn f2[T](x T, i int) T {
32 return x
33}
34