{{1}}
我正在为CustomStringConvertible类型重载'+'运算符。 String和Int都确认了CustomStringConvertible协议,但它给出了一个错误:“二元运算符'+'不能应用于'String'和'Int'print(a + i)类型的操作数”。当我将它应用于'String'+'NSNumber'时它工作正常。 不知道幕后会发生什么。为什么它不起作用?
答案 0 :(得分:3)
问题首先(信不信由你)String
不符合CustomStringConvertible
。因此,您需要自己对其进行一致,以便为self
返回description
(可能比编写另一个重载以独立处理字符串更容易)。
extension String:CustomStringConvertible {
public var description: String {
return self
}
}
其次,您需要两个通用参数用于+
重载,以便允许它接受两个参数的不同类型,同时确保两个参数符合{{1} }:
CustomStringConvertible