说...我有一个阵列[ 1, 2, 4, 5, 6, 9].我想从中制作另一个数组.喜欢["1-2", "2-4", "4-5", "5-6", "6-9"]哪个基于前一个项目,另一个项目后跟.在Swift 3中实现这一目标的最酷方法是什么?是的,我知道如何做这种古老的时尚方式.但我想知道,如果有一个很酷或简单的方法来使用这样的map,reduce或其他人.
谢谢,
你可以用zip和map沿dropLast和dropFirst产生的结果:
let arr = [ 1, 2, 4, 5, 6, 9]
let result = zip(arr.dropLast(), arr.dropFirst()).map { "\($0)-\($1)" }
print(result)
Run Code Online (Sandbox Code Playgroud)
输出:
Run Code Online (Sandbox Code Playgroud)["1-2", "2-4", "4-5", "5-6", "6-9"]
zip通过从两个序列创建一系列元组对来工作. map然后采用这些对并使用String插值组合它们.
正如@MartinR指出的那样,由于zip使用不同长度的序列,您可以跳过dropLast():
let result = zip(arr, arr.dropFirst()).map { "\($0)-\($1)" }
Run Code Online (Sandbox Code Playgroud)
从您option点击时看到的文档zip:
如果传递给zip(: :) 的两个序列的长度不同,则生成的序列与较短序列的长度相同.