Kotlinの関数についてる operator がわからなかったので調べた
operator はオペレータオーバーロードという機能で、独自のクラスに対して演算子の振る舞いをカスタマイズできるというもの
例えば、プログラミング言語に組み込まれている演算子(+, -, *, / など)の動作を、ユーザー定義のクラスに対してカスタマイズできる
Kotlinでは、特定の名前を持つ関数を定義することで、オペレーターをオーバーロードする
そして、これらの関数には operator キーワードを付ける必要がある
例えば、+ 演算子をオーバーロードするため、plus という名前の関数を定義する
data class Point(val x: Int, val y: Int) { operator fun plus(other: Point): Point { return Point(x + other.x, y + other.y) } } val p1 = Point(1, 2) val p2 = Point(3, 4) val p3 = p1 + p2 // Point(4, 6)
これで、Potinインスタンスの足し算が行えるようになった
他にオーバーロードできる主要なものは以下
①算術演算子
+(plus)-(minus)*(times)/(div)%(rem)
②単項演算子
+a(unaryPlus)-a(unaryMinus)!a(not)
③複合代入演算子
+=(plusAssign)-=(minusAssign)*=(timesAssign)
④比較演算子
>,<,>=,<=(compareTo)
⑤等価性演算子
==,!=(equals)
⑥インデックス演算子
a[i](get)a[i] = b(set)
⑦呼び出し演算子
a()(invoke)