當重載運算符爲自定義類時,有什麼方法可以覆蓋運算符優先級?在我的例子中,+
應該比*
更高的優先級。我可以覆蓋默認的運算符優先級嗎?在Swift中運算符優先重載
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
我並不完全明白你的問題。如果你的意思是,先做一件事,然後做第二件事,你可以使用括號。請澄清你的問題,如果我的回答沒有幫助。 – elito25
也許你可以,但它會讓你的代碼更難閱讀,對吧?因爲每個人都有一個先入爲主的觀點,認爲*的優先級高於+。 –
運算符優先級只能在全局範圍內覆蓋,這意味着哇,這不是一個好主意。 –