Arj*_*dav 8 arrays swift swift4
在swift 4之前,我正在使用将一个字符串数组连接成一个字符串,这段代码完美无缺.
let array = ["Andrew", "Ben", "John", "Paul", "Peter", "Laura"]
let joined = array.joined(separator: ", ")
//output:- "Andrew, Ben, John, Paul, Peter, Laura"
Run Code Online (Sandbox Code Playgroud)
但现在在swift 4和Xcode 9显示以下错误
对成员'加入()'的模糊引用
我的问题是如何加入数组的所有元素?
这是一个典型的例子,其中问题中的伪代码具有误导性,并且不会重现错误.
发生错误是因为您正在使用flatMap.由于该数组是一个Int仅使用的非可选单级数组,map因此不使用describing初始化程序:
func getNumbers(array : [Int]) -> String {
let stringArray = array.map{ String($0) }
return stringArray.joined(separator: ",")
}
Run Code Online (Sandbox Code Playgroud)
模糊性是flatMap应用于非可选序列具有不同含义:
从文档中
Run Code Online (Sandbox Code Playgroud)let numbers = [1, 2, 3, 4] let mapped = numbers.map { Array(count: $0, repeatedValue: $0) } // [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]] let flatMapped = numbers.flatMap { Array(count: $0, repeatedValue: $0) } // [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]实际上,
s.flatMap(transform)相当于Array(s.map(transform).joined()).
| 归档时间: |
|
| 查看次数: |
7190 次 |
| 最近记录: |