2012-06-24 3 views
3

Я ищу в библиотеке Scala актеров, и там я нашел следующий код:Scala: Еще одно использование подчеркивания?

private[scheduler] trait TerminationMonitor { 
    _: IScheduler => 

    protected var activeActors = 0 
    ... 

Вопрос заключается в том, что смысл _: IScheduler => здесь?
Я новичок в Scala, и это меня смущает, что с подчеркиванием существует очень много разных значений.

Спасибо за вашу помощь заранее!

+2

Возможный дубликат [Что означает «внешний =>» действительно означает?] (Http: // stackoverflow.com/questions/4353915/what-does-outer-really-mean) или [Явные саморекламы без какого-либо типа/различия с '' this ''] (http://stackoverflow.com/questions/8073263/explicit -самосопряженных ссылка-с-не-типа разности-с-это). Единственное различие заключается в том, что символ подчеркивания используется здесь для обозначения самоопределения, что означает забыть имя. – sschaef

+1

Найти эту ссылку http://www.slideshare.net/normation/scala-dreaded, ссылки которой SO – octopusgrabbus

+0

Спасибо за полезные ссылки! Они действительно сводят меня с ума:/ –

ответ

5

Такое использование подчеркивания похож на те:

someElem match { 
    case _: String => doSomething() 
} 

val k = (_: Int) => "This does not use the Int argument." 

val (m, _, o) = (1,2,3) 

Это синтаксический заполнитель для идентификатора (переменной), который сразу же после этого отбрасывали.

Таким образом, в вашем примере избегается именование самонастройки. (Но так как ссылка на самонаведение всегда доступна как this, это было бы эквивалентно написанию this: IScheduler => в этом специальном случае.)

+0

Спасибо за ответ, Debilski. Я не знал об объявлении типа self. : / –

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