我在递增变量整数时遇到一些麻烦。这段代码:

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/

10-09 04:50