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

裁缝
public func +<T: CustomStringConvertible>(lhs: T, rhs: T)->String{
    return lhs.description+rhs.description
}

let a:String = "A"

let i:Int = 0

print(a+i)

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

哈米什

问题首先是(信不信由你)String不符合CustomStringConvertible因此,你会希望自己适应它,以便它返回selfdescription(比写另一个重载独立处理字符串可能更容易)。

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

其次,您需要两个通用参数来处理+重载,以使其能够接受两个参数的不同类型,同时确保两个参数都符合CustomStringConvertible

public func +<T: CustomStringConvertible, U:CustomStringConvertible>(lhs: T, rhs: U)->String{
    return lhs.description+rhs.description
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的函数适用于矩阵但为什么不适用于向量?

来自分类Dev

为什么严格的别名规则不适用于 int* 和 unsigned*?

来自分类Dev

为什么忽略SIGTRAP不适用于asm?

来自分类Dev

为什么Map在Groovy中不适用于GString?

来自分类Dev

为什么绑定不适用于动画?

来自分类Dev

为什么python re模块不适用于@?

来自分类Dev

为什么向左滑动不适用于Jquery mobile?

来自分类Dev

为什么这些条件不适用于模板类型?

来自分类Dev

为什么乘法不适用于读取主机值

来自分类Dev

为什么strtok不适用于stringstream?

来自分类Dev

为什么ng-bind不适用于数组?

来自分类Dev

为什么输入模式属性不适用于数字?

来自分类Dev

为什么$别名不适用于此jQuery函数

来自分类Dev

为什么ExtractMpegFramesTest不适用于旋转的输入文件?

来自分类Dev

为什么GCC优化不适用于valarrays?

来自分类Dev

为什么`Condition`属性不适用于`ItemGroup`元素?

来自分类Dev

为什么角度绑定不适用于服务原语

来自分类Dev

为什么此委托不适用于UITextView

来自分类Dev

自动装箱为什么不适用于Short(5)?

来自分类Dev

为什么cout不适用于pthreads?

来自分类Dev

为什么innerTEXT不适用于节点?

来自分类Dev

为什么CSS覆盖不适用于嵌套按钮?

来自分类Dev

为什么JUnit DataPoints方法不适用于原语?

来自分类Dev

为什么同步方法不适用于多线程

来自分类Dev

为什么“大于”不适用于char类型?

来自分类Dev

为什么bash brace扩展不适用于命令?

来自分类Dev

为什么每个循环不适用于JSON数组

来自分类Dev

为什么加载事件的addEventListener不适用于div?

来自分类Dev

为什么验证不适用于表单请求?

Related 相关文章

热门标签

归档