2

在 Swift 4.1 之前,我曾经从集合flatMap中删除nil值。现在此方法已弃用,我需要将其替换为compactMap. 有时我使用flatMap惰性集合来优化我的代码,如下所示:

let optionalIntegers : [Int?] = [1, 2, nil, 3, 4, nil, nil, 5]
optionalIntegers.lazy.flatMap { $0 }.forEach { print("Item \($0 * 10)") }

如果我使用compactMap而不是,它会产生相同的效果flatMap吗?在该方法的文档中,lazy我找到了对mapfilter仅引用。

4

1 回答 1

4

是的,完全一样。他们只是决定消除flatMap功能的歧义,并将其中一个重命名为compactMap不混淆开发人员。

这是建议:介绍 Sequence.compactMap(_:)

我们建议弃用有争议的 Sequence.flatMap 方法版本,并以不同且可能更具描述性的名称提供相同的功能。

在此处输入图像描述

于 2018-04-19T12:18:43.910 回答