2017-02-08 1 views
1

안녕하세요 저는 초보자입니다. 배열을 입력으로 받아서 문자열로 변환하는 함수를 만들려고합니다. 내가 사용하고자하는 배열은 문자열로 가득 차 있습니다.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 (separator : "")'. – 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