Swift中的运算符优先级重载
发布时间:2020-12-14 04:49:54 所属栏目:百科 来源:网络整理
导读:在重载自定义类的运算符时,有没有办法覆盖运算符优先级?在我的例子中,应该具有比*更高的优先级.我可以覆盖默认的运算符优先级吗? 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)-I
在重载自定义类的运算符时,有没有办法覆盖运算符优先级?在我的例子中,应该具有比*更高的优先级.我可以覆盖默认的运算符优先级吗?
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 但据我所知,这只能在“文件范围”完成,至少根据在类中包含它所产生的编译器错误.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |