在swift 4之前我正在使用一个字符串数组连接成一个字符串,这段代码运行得很好。
let array = ["Andrew", "Ben", "John", "Paul", "Peter", "Laura"]
let joined = array.joined(separator: ", ")
//output:- "Andrew, Ben, John, Paul, Peter, Laura"
但现在在swift 4和Xcode 9显示以下错误
对成员'加入()'
的模糊引用
我的问题是如何加入数组的所有元素?
答案 0 :(得分:9)
这是一个典型的例子,其中问题中的伪代码具有误导性,并且不会重现错误。
发生错误是因为您使用的是flatMap
。由于数组是Int
的非可选单级数组,因此只需使用map
并且不要使用describing
初始化程序:
func getNumbers(array : [Int]) -> String {
let stringArray = array.map{ String($0) }
return stringArray.joined(separator: ",")
}
模糊性是应用于非可选序列的flatMap
具有不同的含义:
来自文档
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())
。