微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift中的IntStream等效项

如何解决Swift中的IntStream等效项

我正在研究Java中的某些组件,并想知道将以下Java代码片段转换为Swift的最佳实践是什么。

public void doTest(ArrayList<Double> items) {
    // I kNow that I should check the count of items. Let's say the count is 10.
    double max = IntStream.range(1,5)
                    .mapTodouble(i -> items.get(i) - items.get(i - 1))
                    .max().getAsDouble();
}

我知道在Swift中没有等效的并行聚合操作来复制IntStream。我是否需要编写一些嵌套循环或任何更好的解决方案?谢谢。

解决方法

我相信这是最短的 Swift 等效函数:

func doTest(items: [Double]) -> Double? {
    return (1...5)
        .map { i in items[i] - items[i - 1] }
        .max()
}

我使用 Swift Range Operator 代替 IntStream。

这是对该函数的测试:

func testDoTest() throws {
    let items = [2.2,4.4,1.1,3.3,7.7,8.8,5.5,9.9,6.6]
    print("1 through 5: \(items[1...5])")
    let result = doTest(items: items)
    print("result: \(String(describing: result))")
}

输出如下:

1 through 5: [4.4,8.8]
result: Optional(4.4)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。