gpt4 book ai didi

sequence - 你如何在 Ceylon 中展平一个 Sequence of Sequences?

转载 作者:行者123 更新时间:2023-12-01 10:51:02 25 4
gpt4 key购买 nike

给定一个 Sequence of Sequences 类型,如何将其转换为单个扁平化 Sequence 类型?考虑以下 Ceylon 代码:

Integer[] range(Integer max) {
return [ for (idx in 1..max) idx ];
}

Integer[] prod(Integer max, Integer occurrences) {
Integer[][] nestedSequence = [for (occurrence in 1..occurrences) range(max)];
return // ??? something to produce a flattened sequence
}

assert (prod(2, 2) == [1, 2, 1, 2]);

我是第一次尝试使用 Ceylon,并且摸索着浏览教程和 API 文档。 unzip method看起来有点接近我需要的,但不完全是。

最佳答案

可变参数函数 concatenate() 连接可迭代对象,产生一个序列:

Integer[] prod(Integer max, Integer occurrences) {
Integer[][] nestedSequence = [ for (occurrence in 1..occurrences) range(max) ];
return concatenate(*nestedSequence);
}

这可以像这样不那么冗长地重写:

Integer[] prod(Integer max, Integer occurrences)
=> concatenate(for (occurrence in 1..occurrences) range(max));

但我不喜欢这个实现,因为它做了很多序列的急切实例化。我非常更喜欢这个实现,它只进行一个序列实例化:

Integer[] prod4(Integer max, Integer occurrences)
=> [ for (occurrence in 1..occurrences) for (x in range(max)) x ];

仅供引用,在 Ceylon 1.1 中,添加了 expand() 函数,它比 concatenate() 更懒。

HTH,祝你好运!

关于sequence - 你如何在 Ceylon 中展平一个 Sequence of Sequences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20302792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com