ScalaでSwingのプログラムを組もうとして、apiのドキュメントを見ていたら、ちょいちょい「_=」で終わるメソッド名が目についた。
気になって、調べて見たら
Getters and Setters in Scala | The Personal Blog of Dustin Martinを発見。
一番下のほうに
First, the method name is “age_=”. The underscore is a special character in Scala
and in this case, allows for a space in the method name which essentially makes
the name “age =”.
とあるんだけど訳すと
最初にメソッド名は "age_="となる。アンダースコアはScalaでは特別な文字で、この場合メソッド名に空白を許可し、メソッド名を実質的に "age =" とする
という意味になる。なんとなくこの文章読んで思ったのが
「文字列と"="の間に複数の空白が入ると実はエラーになるのでは」
と思って試してみた。
class SimpleTest { var _simpleTest = "" def test_=(strTest: String) = {_simpleTest = strTest} def test = _simpleTest }
これを下記のように実行すると
val hoge = new SimpleTest hoge.test = "Hello" // OK hoge.test = "Hello" //OK
という感じでどっちも問題なかった。
表記の仕方からするとエラーになった方が自然なような気がするんだけど、まあ、エラーにされると不便だからいいか。
でも不思議~~。
0 件のコメント:
コメントを投稿