swift2 – 二元运算符不能应用于 *** 作数

swift2 – 二元运算符不能应用于 *** 作数,第1张

概述最近,我正在阅读“ swift中的函数式编程”.在书中,作者对Int进行了一些扩展,以满足较小的协议.为了彻底了解作者的想法,我将代码复制到我自己的游乐场,但它报告错误. protocol Smaller { static func smaller() -> Self?}extension Int: Smaller { static func smaller() -> Int 最近,我正在阅读“ swift中的函数式编程”.在书中,作者对Int进行了一些扩展,以满足较小的协议.为了彻底了解作者的想法,我将代码复制到我自己的游乐场,但它报告错误.

protocol Smaller {    static func smaller() -> Self?}extension Int: Smaller {    static func smaller() -> Int? {      //reporting error: Binary operator "==" cann't be applIEd to type of Int.type and Int        return self == 0 ? nil : self / 2    }}

似乎扩展中不允许自我== 0.有没有人知道原因.

解决方法 我不认为你想使用静态函数,因为你需要一个实例化的整数来处理并检查它是否更小.

所以有两种方法:

>从函数中删除静态,然后正常调用它:

让aInt = 4
aInt.smaller()//将是2

>或者您更改静态函数的签名以接受实例作为参数

`

protocol Smaller {  static func smaller(selfTomakeSmall: Self) -> Self?}extension Int: Smaller {  static func smaller(selfTomakeSmall: Int) -> Int? {    //reporting error: Binary operator "==" cann't be applIEd to type of Int.type and Int    return selfTomakeSmall == 0 ? nil : selfTomakeSmall / 2  }}let theInt = 4Int.smaller(theInt)

`

但我认为这也可以通过Generics改进

总结

以上是内存溢出为你收集整理的swift2 – 二元运算符不能应用于 *** 作数全部内容,希望文章能够帮你解决swift2 – 二元运算符不能应用于 *** 作数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存