この特性「人とこのクラスを考慮すると「PersonImpl」:REPL使用Scalaのセッターとゲッター
trait Person {
def name: String
def surname: String
def married: Boolean
def married_=(state: Boolean): Unit
override def toString(): String = name + " " + surname + " " + married
}
class PersonImpl(override val name: String,
override val surname: String,
override var married: Boolean) extends Person
(コマンドラインからスカラを、単に端末とタイプスカラ座を開いて)私はトレイトとクラスを作成します。私は次のメッセージを持っている: は、コマンドラインから、まだ、 -definedクラスPersonImpl
次に形質人を-defined、私が入力します。- ヴァル・P:人( "マリオ" =新PersonImpl1、 "ロッシ」、false)を
- のprintln(P)
- p.married =真
- prinln(P)
私の人が作成され、結婚したvarフィールドがfalseからtrueに変更されていることがはっきりとわかります。大丈夫。私はエラーに遭遇し、コマンドラインにクラスを入力するとすぐに
trait Element {
def x: Int
def y: Int
def width: Int
def height: Int
def x_:(i:Int):Unit
def y_:(i:Int):Unit
override def toString(): String = x + " " + y + " " + width + " " + height
}
class GameElement(override var x: Int,override var y: Int,override val width: Int,override val height: Int) extends Element
: は今、私は別のクラスと他の形質と同じプロセスを繰り返しています 「変数xが何よりも優先されますない」
これはどのように可能ですか?
に同じ
x_=(i:Int):Unit
をDEFに変更されている必要があり、あなたの質問に答えるために、私は、ある要素の特性、に '=' を忘れてしまった:形質の要素{ デフX:のInt デフY:のInt DEF幅:のInt DEF高さ:のInt DEF X _ :(I:INT):単位 DEF Y _ :(I:INT):単位 オーバーライドデフのtoString():文字列= X + "" + Y + " "+幅+" "+高さ } –あなたのスペルが間違っています要素を実際の例と比較すると、違いが分かるはずです。 – puhlen