最酷的方式结合Swift 3中的项目

Kaz*_*awa 2 swift

说...我有一个阵列[ 1, 2, 4, 5, 6, 9].我想从中制作另一个数组.喜欢["1-2", "2-4", "4-5", "5-6", "6-9"]哪个基于前一个项目,另一个项目后跟.在Swift 3中实现这一目标的最酷方法是什么?是的,我知道如何做这种古老的时尚方式.但我想知道,如果有一个很酷或简单的方法来使用这样的map,reduce或其他人.

谢谢,

vac*_*ama 5

你可以用zipmap沿dropLastdropFirst产生的结果:

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)

输出:

["1-2", "2-4", "4-5", "5-6", "6-9"]
Run Code Online (Sandbox Code Playgroud)

zip通过从两个序列创建一系列元组对来工作. map然后采用这些对并使用String插值组合它们.


正如@MartinR指出的那样,由于zip使用不同长度的序列,您可以跳过dropLast():

let result = zip(arr, arr.dropFirst()).map { "\($0)-\($1)" }
Run Code Online (Sandbox Code Playgroud)

从您option点击时看到的文档zip:

如果传递给zip(: :) 的两个序列的长度不同,则生成的序列与较短序列的长度相同.

  • 它甚至没有`dropLast()`也能工作 (4认同)