41 lines
789 B
V
41 lines
789 B
V
struct BuildData {
|
|
x int
|
|
}
|
|
|
|
struct Tensor {
|
|
x int
|
|
}
|
|
|
|
fn new_tensor<T>(data BuildData) Tensor {
|
|
println('data: $data')
|
|
x := T(data.x)
|
|
println(x)
|
|
return Tensor{data.x}
|
|
}
|
|
|
|
fn test_generic_function_returning_type_starting_with_t() {
|
|
ft := new_tensor<f64>(x: 123)
|
|
println(ft)
|
|
assert typeof(ft).name == 'Tensor'
|
|
assert '$ft' == 'Tensor{\n x: 123\n}'
|
|
//
|
|
it := new_tensor<int>(x: 456)
|
|
println(it)
|
|
assert typeof(it).name == 'Tensor'
|
|
assert '$it' == 'Tensor{\n x: 456\n}'
|
|
}
|
|
|
|
// the following verifies that returning a generic type T
|
|
// works at the same time as returning a type starting with T
|
|
fn new_t<T>(o T) T {
|
|
x := T(o)
|
|
return x
|
|
}
|
|
|
|
fn test_generic_function_returning_t_type() {
|
|
f := new_t<f64>(1.23)
|
|
i := new_t<int>(456)
|
|
assert '$f' == '1.23'
|
|
assert '$i' == '456'
|
|
}
|