我在递增变量整数时遇到一些麻烦。这段代码:
variable Integer myInteger = -1;
Integer getInteger () {
myInteger = myInteger + 1;
print("myInteger: " + myInteger.string);
return Integer(myInteger);
}
Array<Integer> integers =
Array.ofSize(
4,
getInteger());
print(integers);
给出以下输出:
myInteger: 0
{ 0, 0, 0, 0 }
而预期的输出是:
myInteger: 0
myInteger: 1
myInteger: 2
myInteger: 3
{ 0, 1, 2, 3 }
那是怎么回事?
最佳答案
我认为您的示例是人为设计的,可以写为Array(0:4)
或Array(0..3)
。但是,假设您有充分的理由要遍历一个生成函数,这就是我的写法:
Array(loop(0)((i) => i+1).take(4))
或者,等效地:
Array(loop(0)(Integer.successor).take(4))
甚至:
Array(loop(0)(1.plus).take(4))
IMO,这比使用访问外部作用域中的变量的流要好得多。
关于ceylon - 递增整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46113172/