2017-02-08 11 views
1

こんにちは私はSwiftの初心者です。配列を入力として文字列に変換する関数を作成しようとしています。私が使用したい配列は文字列でいっぱいです。Function Array to String(Swift)

func arrayToString (_ x:Array<Any>) { 
    let y = x.joined(separator: "") // error: Ambiguous reference to member 'joined()' 
    return y 
} 

誰でも私が間違っていることを教えてもらえますか?ドクあたりとして

+2

要素、実行時にいくつかのAPIから 'Any'オブジェクトが供給されて強制的に使用されない限り、避けたいタイプです。 'x'を代わりに' String'インスタンスの配列にするオプションはありますか? ( '[String]')。また、あなたは戻り値の型をあなたの関数に与えていないので、 'Void'(これは' - > String'としたい)と推測されます。 'x'が' [Any] 'である場合、' joined(separator:) 'を呼び出す前に' x'の各要素を 'String'に型変換しようとする必要があります。 'return x.flatMap {$ 0 as? String} .joined(セパレータ: "") '。 – dfri

答えて

1

:それだけArray<String>

で動作しますそして、あなたのコードがどうあるべき

extension Array where Element == String { 

    /// Returns a new string by concatenating the elements of the sequence, 
    /// adding the given separator between each element. 
    /// 
    /// The following example shows how an array of strings can be joined to a 
    /// single, comma-separated string: 
    /// 
    ///  let cast = ["Vivien", "Marlon", "Kim", "Karl"] 
    ///  let list = cast.joined(separator: ", ") 
    ///  print(list) 
    ///  // Prints "Vivien, Marlon, Kim, Karl" 
    /// 
    /// - Parameter separator: A string to insert between each of the elements 
    /// in this sequence. The default separator is an empty string. 
    /// - Returns: A single, concatenated string. 
    public func joined(separator: String = default) -> String 
} 

: `Any`型であるX '`の

func arrayToString (_ x:Array<String>) -> String { 
    let y = x.joined(separator: "") 
    return y 
} 

arrayToString(["abc", "123"]) //"abc123" 
+0

上記の関数は単に配列( '[abc"、 "123"]。joined()から 'joined()'への呼び出しと同じことを行うため、 'default'セパレータは' '' ')。 – dfri