2

Scala では、それ自体のインスタンスを呼び出さずにメンバー メソッドを呼び出すことは可能ですか?

たとえば、次のクラスがあります。

class Model {
    def action(value : String) = {
        // Do action
    }
}

このオブジェクトの実装は機能します:

object MyModel extends Model {
    this action "doSomething"
}

しかし、私はこのようなことをしたいと思います:

object MyModel extends Model {
    action "doSomething"
}

オブジェクトの状態を定義するための適切な方法であるため、Java プロパティ ファイルの場合と同様です。

のエイリアスを定義することができましたthis

def declare = this

しかし、メンバー メソッドの呼び出しの前に単語を使用しなければならないという同じ問題です。

これを行うオプションはありますか?

4

1 に答える 1

8

はい。ただし、括弧を使用する必要があります。

object MyModel extends Model {
    action("doSomething")
}

括弧を省略できる場合と省略できない場合の詳細については、たとえばこの回答を参照してください。

this補足として、次のようにエイリアスすることもできます。

object MyModel extends Model { declare =>
  declare action "doSomething"
}

これは、入れ子になったクラスの内部からクラスを参照する場合に便利です。Javathisで書くよりも少し冗長です。Outer.this.x

于 2012-06-28T02:07:30.753 に答える