Chapel 中的空数组是否有文字?
Is there a literal for the empty array in Chapel?
我正在尝试在 Chapel 中创建一个空数组。一个元素的数组可以这样构成:
var a: [1..1] int = (1);
但是当我尝试
var b: [1..0] int = ();
我明白了
syntax error: near ')'
Chapel 中是否存在空数组文字?我没能找到例子。
编辑
我试图获取一个空数组的原因是我想实现让这个函数对空数组起作用:
proc sum_of_even_squares(a) {
// Does this work for empty arrays? Probably not.
return + reduce ([x in a] if x % 2 == 0 then x*x else 0);
}
assert(sum_of_even_squares([7]) == 0);
assert(sum_of_even_squares([7, 3]) == 0);
assert(sum_of_even_squares([7, 3, -8]) == 64);
assert(sum_of_even_squares([7, 3, -8, 4]) == 80);
但是我无法形成一个空数组文字。
一般在Chapel中,声明一个空的东西,就是指定它的类型,而不是初始化,比如
var i:int;
但是要声明一个用值初始化的整数,您可能会省略类型:
var j = 2;
在这种情况下,只需省略初始化程序即可。
var b: [1..0] int;
相关地,(1)
不是声明数组文字,而是声明元组文字。语法 [1]
将声明一个数组文字。目前,编译器实现不支持零长度元组。让零长度数组文字工作可能更容易,但它现在似乎也不起作用(在 1.15 中)。
零长度数组文字如何知道元素的类型?因此,我认为它对您的具体情况没有帮助。
我正在尝试在 Chapel 中创建一个空数组。一个元素的数组可以这样构成:
var a: [1..1] int = (1);
但是当我尝试
var b: [1..0] int = ();
我明白了
syntax error: near ')'
Chapel 中是否存在空数组文字?我没能找到例子。
编辑
我试图获取一个空数组的原因是我想实现让这个函数对空数组起作用:
proc sum_of_even_squares(a) {
// Does this work for empty arrays? Probably not.
return + reduce ([x in a] if x % 2 == 0 then x*x else 0);
}
assert(sum_of_even_squares([7]) == 0);
assert(sum_of_even_squares([7, 3]) == 0);
assert(sum_of_even_squares([7, 3, -8]) == 64);
assert(sum_of_even_squares([7, 3, -8, 4]) == 80);
但是我无法形成一个空数组文字。
一般在Chapel中,声明一个空的东西,就是指定它的类型,而不是初始化,比如
var i:int;
但是要声明一个用值初始化的整数,您可能会省略类型:
var j = 2;
在这种情况下,只需省略初始化程序即可。
var b: [1..0] int;
相关地,(1)
不是声明数组文字,而是声明元组文字。语法 [1]
将声明一个数组文字。目前,编译器实现不支持零长度元组。让零长度数组文字工作可能更容易,但它现在似乎也不起作用(在 1.15 中)。
零长度数组文字如何知道元素的类型?因此,我认为它对您的具体情况没有帮助。