Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift中的运算符优先级重载大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在重载自定义类的运算符时,有没有办法覆盖运算符优先级?在我的例子中,应该具有比*更高的优先级.我可以覆盖默认的运算符优先级吗? class Vector{ var x:Int var y:Int init(x _x:Int, y _y:int){ self.x = _x self.y = _y } } func *(lhs:Vect
在重载自定义类的运算符时,有没有办法覆盖运算符优先级?在我的例子中,应该具有比*更高的优先级.我可以覆盖认的运算符优先级吗?

class Vector{
    var x:Int
    var y:Int
    init(x _x:Int,y _y:int){
        self.x = _x
        self.y = _y
    }
}

func *(lhs:Vector,rhs:Vector)->Int{
    return lhs.x * rhs.y + rhs.x + rhs.y
}

func +(lhs:Vector,rhs:Vector)->Vector{
    return Vector(x: lhs.x + rhs.x,y: lhs.y + rhs.y)
}

var v1 = Vector(x: 6,y: 1)
var v2 = Vector(x: 3,y: 1)


v1 * v2 + v1

解决方法

嗯.它实际上似乎你可以.

operator infix + { associativity left precedence 140 }
operator infix * { associativity left precedence 30 }

let x = 3 + 4 * 5 // outputs 35

但据我所知,这只能在“文件范围”完成,至少根据在类中包含它所产生的编译器错误.

大佬总结

以上是大佬教程为你收集整理的Swift中的运算符优先级重载全部内容,希望文章能够帮你解决Swift中的运算符优先级重载所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。