以下の data class
data class Token(
val prompt: Int = 0,
val completion: Int = 0
)
が2つあったとして
val a = Token(1, 2)
val b = Token(10, 20)
これらを足す。
どう書きますか?
println(
Token(
a.prompt + b.prompt,
a.completion + b.completion
)
)
// Token(prompt=11, completion=22)
println(
a.copy(
prompt = a.prompt + b.prompt,
completion = a.completion + b.completion
)
)
// Token(prompt=11, completion=22)
🔢 + (plus) 演算子をオーバーロードする
拡張関数で + (plus) 演算子
をオーバーロードします。
operator fun Token.plus(other: Token): Token {
return Token(prompt + other.prompt, completion + other.completion)
}
println(
a + b
)
// Token(prompt=11, completion=22)
こんなことできるんですね!
素晴らしい!
👉 Operator overloading | Kotlin Documentation