2
我知道plus
和plusAssign
之間有一些區別,後者不能返回任何東西,但我發現plus
可以實現什麼plusAssign
做什麼。運算符重載kotlin中的plus和plusAssign有什麼區別?
A Point
class overloads plus
並返回一個新的Point
。
data class Point(var x: Int, var y: Int)
{
operator fun plus(other: Point): Point
{
return Point(x + other.x, y + other.y)
}
}
一個Point
類重載plusAssign
但不返回一個新的Point
。
data class Point(var x: Int, var y: Int)
{
operator fun plusAssign(other: Point): Unit
{
this.x+=other.x
this.y+=other.y
}
}
但我覺得它也可以實現這樣的:
data class Point(var x: Int, var y: Int)
{
operator fun plus(other: Point): Point
{
this.x+=other.x
this.y+=other.y
return this;
}
}
所以,我無法找到使plusAssign
特別的,有什麼plusAssign
可以做,但plus
不能?
當然,當我做'a + b'時,你可以修改'a',但我完全希望你不要這樣做,因爲它是瘋了。 – chris