如何在Swift中打印未知类型的描述?

时间:2014-06-04 05:50:54

标签: swift

如何创建dump()数组扩展名以打印出数组中的所有元素?

尝试强制转换为Printable协议时出现构建错误:

extension Array {
    func dump() -> String {
        var s = ""
        for x in self {
            if let p = x as? Printable {
                if s != "" { s += ", " }
                s += p.description
            }
        }
        return s
    }
}
  28:26:错误:不能从T' T'非@ objc协议类型'可打印'

如何获取数组中每个元素的字符串表示?

或者有没有办法可以在数组中找到Printable元素?

2 个答案:

答案 0 :(得分:1)

字符串插值?

extension Array {
    func dump() -> String {
        var s = ""
        for x in self {
            let x_str = "\(x)"
            s += x_str
            if !x_str.isEmpty {
                s += ","
            }
        }
        return s
    }
}

答案 1 :(得分:0)

您也可以使用reduce

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.reduce("") { $0 == "" ? "\($1)" : "\($0), \($1)" }
// "1, 2, 3, 4, 5, 6, 7, 8, 9"