プログラミング言語 Scala 7冊目
■ このスレッドは過去ログ倉庫に格納されています
0808デフォルトの名無しさん
2012/01/22(日) 14:00:14.07メソッド名が演算子のみで構成されてるならなんでもおk
l += rという表記は、
・変数lに入ってるクラスに+=というメソッドがない
・変数lがimplicit conversionで+=というメソッドを持っているクラスに変換できない
・l = l + rが型的に正しい(lがvarで宣言されていて、lがメソッド+を持っている)
以上をすべて満たしてる場合にl = l + rとして再解釈される …って言語仕様の6.12.4に書いてあった
class A(init: String) {
var str = init
def *^-^*(s: String): A = { str += s; this }
}
var l = new A("left")
l *^-^*= "-right"
println(l.str) // => left-right
こんなのでもいける
■ このスレッドは過去ログ倉庫に格納されています