匿名クラスを作るときに関数の引数名と匿名クラスのメソッド名が同じ場合の回避方法を知りたい
メソッドで匿名クラスを作るとき、引数とそのクラスのメソッド名が同じ場合
trait User{ val name:String }
def newUser(name:String) = new User{
val name = name
}
のようにしたいのですが、warning: value name does nothing other than call itself recursively となります、というかval name=name が val name=this.name と解釈されているため、意図通りには動きません。
関数の引数名は、名前付き引数などで利用したいので、なるべくクラスで使われているそのものにしたいです。その場合
def newUser(name:String) = {
val xname=name
new User{
val name = xname
}
}
のように一時的に別名の引数に代入するしかないのでしょうか?