教堂中的空数组是否有文字



我正在尝试在教堂中创建一个空数组。一个元素的数组可以像这样制作:

var a: [1..1] int = (1);

但是当我尝试时

var b: [1..0] int = ();

我得到

语法错误:靠近"(">

教堂里有空数组文字吗?我找不到例子。

编辑

我尝试获取空数组的原因是我想实现让这个函数适用于空数组:

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 中(。

零长度数组文字如何知道元素的类型?出于这个原因,我认为它对您的特定情况没有帮助。

相关内容

  • 没有找到相关文章

最新更新