setterの書き方ではまりました
Scalaのプロパティ構文、特にsetterの書き方ではまりました。
Javaは使いたいけどプロパティ構文が使えないことと、最近よく効く関数型プログラミング言語に興味があってScalaを勉強し始めました。当然のごとく、プロパティ構文を確認することから始めたのですが、いきなりsetterの書き方で躓いてしまいました。
プロパティ構文*1setterの書き方
以下のようにコーディングではエラー*2になります。A Scala Tutorialのコード例をそのままタイプしたつもりなのですがコンパイルエラーです。
class Employee { private var name_ :String = _ def name: String = name_ def name _= (aName: String) { name_ = aName } }
keisukenのたわ言で教えてもらったのですが、setterはメンバ変数名に"_="を付けた名前になるそうです。”name_=”が名称ということでしょうか。
修正結果は以下の通りです。
def name_= (aName: String) { // nameと_=の間の空白を削除した。
ちなみに、Scalaのプロパティ構文ではgetter必須で省略できないようです。