为什么CustomStringConvertible协议不适用于Int?

时间:2016-05-07 06:39:36

标签: ios swift

{{1}}

我正在为CustomStringConvertible类型重载'+'运算符。 String和Int都确认了CustomStringConvertible协议,但它给出了一个错误:“二元运算符'+'不能应用于'String'和'Int'print(a + i)类型的操作数”。当我将它应用于'String'+'NSNumber'时它工作正常。 不知道幕后会发生什么。为什么它不起作用?

1 个答案:

答案 0 :(得分:3)

问题首先(信不信由你)String不符合CustomStringConvertible。因此,您需要自己对其进行一致,以便为self返回description(可能比编写另一个重载以独立处理字符串更容易)。

extension String:CustomStringConvertible {
    public var description: String {
        return self
    }
}

其次,您需要两个通用参数用于+重载,以便允许它接受两个参数的不同类型,同时确保两个参数符合{{1} }:

CustomStringConvertible