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では、次のエラーが表示されます
メンバー 'joined()'へのあいまいな参照
私の質問は、配列のすべての要素をどのように結合できるかです。
これは、質問のpseudo-codeが誤解を招きやすく、エラーを再現しない典型的な例です。
このエラーは、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())
と同等です。