2012-06-28 5 views
2

В Scala можно вызвать метод-член без вызова собственного экземпляра?Вызов метода-члена без ключевого слова 'this'

Например, имея класс:

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 

, но это та же проблема того, чтобы использовать слово перед вызовом метода члена.

Есть ли возможность сделать это?

ответ

8

Да, но вы должны использовать круглые скобки:

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

См this answer, например более подробно о том, когда круглые скобки могут или не могут быть опущены.

В качестве примечания, вы можете также псевдоним this следующим образом:

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

Это бывает полезно, если вы хотите обратиться к класса this внутри вложенного класса-это немного компактнее, чем написав Outer.this.x, как и на Java.

Смежные вопросы