这是我需要在 Chapel 中重新创建的类似 Python 的模式。
class Gambler {
var luckyNumbers: [1..0] int;
}
var nums = [13,17,23,71];
var KennyRogers = new Gambler();
KennyRogers.luckyNumbers = for n in nums do n;
writeln(KennyRogers);
产生运行时错误
Kenny.chpl:8: error: zippered iterations have non-equal lengths
我不知道Kenny事先会有多少个幸运数字,那时我无法实例化Kenny。也就是说,我必须稍后分配它们。另外,我需要知道什么时候持有它们,什么时候折叠它们。
最佳答案
这是 array.push_back
的一个很好的应用方法。要一次插入一个幸运数字,您可以执行以下操作:
for n in nums do
KennyRogers.luckyNumbers.push_back(n);
您还可以在单个 push_back
操作中插入整个数组:
KennyRogers.luckyNumbers.push_back(nums);
还有 push_front
和 insert
方法,以防您需要将元素放在数组的前面或任意位置。
我认为我无法帮助确定何时持有或何时弃牌。
关于list-comprehension - 将数组分配给教堂类中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852110/