我想在数组上编写一个函数,但我想要一个泛型类型。对于论证,让我们把它作为一个总和。
proc mySum(x:[] int) {
return + reduce x;
}
proc mySum(x:[] real) {
return + reduce x;
}
泛型类型的符号是什么?我认为它类似于proc mySum(x: [] <T>) {}
,但是不起作用。
答案 0 :(得分:6)
最简单的方法是在正式的类型声明中保留元素类型:
$textbox = $section->addTextBox(
array(
'marginTop' => -100,
'marginLeft' => -100,
'posHorizontal' => 'absolute',
'posVertical' => 'absolute',
'align' => 'left',
'positioning' => 'relative',
'width' => 200,
'height' => 40,
'borderColor' => '#eeeeee',
'borderSize' => 0,
'bgColor' => 'black',
)
);
会给你:
proc mySum(x:[]) {
return + reduce x;
}
writeln(mySum([1, 2, 3]));
writeln(mySum([1.0, 2.0, 3.0]));
如果您希望以符号方式引用该类型,您还可以使用以下语法查询它并将其绑定到标识符(6
6.0
此处):
t
会给你:
proc mySum(x:[] ?t) {
writeln("I'm computing a reduction over an array of ", t:string);
return + reduce x;
}
writeln(mySum([1, 2, 3]));
writeln(mySum([1.0, 2.0, 3.0]));
(当然,您也可以执行类似I'm computing a reduction over an array of int(64)
6
I'm computing a reduction over an array of real(64)
6.0
等类型的变量声明。)