2017-02-05 3 views
0

Я смотрел на ActorLogging here и наткнулся на этот синтаксис:Что означает приложение scala?

def receive = LoggingReceive { 
    case x => ... 
} 

Что этот синтаксис SomeName { } означает? Я знаю, что в scala {} создайте блок операторов, а последней строке назначается переменная. Комментарии объясняют как:

Wrap получающих частичную функцию в лесозаготовительной корпусе

Есть технический термин для него, так что я могу узнать его использование больше? Примечание: Я знаю, что такое частичная функция. Из комментариев и ответов я понял, что LoggingReceive возвращает частичную функцию и синтаксис apply.

+0

Возможный дубликат [Использование частичных функций в Scala - как это работает?] (Http://stackoverflow.com/questions/8650549/using-partial-functions-in-scala-how-does-it-work) – zhelezoglo

+0

Также читайте это: [Какая формальная разница между Scala между скобками и скобками и когда они должны использоваться?] (Http://stackoverflow.com/questions/4386127/what-is-the-formal-difference-in -scala-between-braces-and-roundheses-and-when) – zhelezoglo

ответ

-1

В akka receive способ должен иметь Receive как результат типа. Так вот, они используют объект LoggingReceive, который имеет apply метод, определенный как это:

def apply(r: Receive)(implicit context: ActorContext): Receive = withLabel(null)(r) 

В Scala у нас есть синтаксический сахар конструкцию так вместо вызова:

LoggingReceive.apply(...) 

Вы можете просто написать:

LoggingReceive(...) 

Там еще одна вещь - в Scala мы можем использовать {...} скобки вместо (...) скобки, так выше выражение можно записать в виде:

LoggingReceive{...} 

Так что в конце концов они просто обернув receive метод с apply методом LoggingReceive который вызывает метод withLabel().

+0

Это фактически не объясняет функцию, которую искал оригинальный плакат. Пожалуйста, см. Http://stackoverflow.com/questions/4386127/what-is-the-formal-difference-in-scala-between-braces-and-parentheses- and-when для реального объяснения. См. Раздел «Функциональные/частичные функциональные литералы с аргументом» в ответе. – jrudolph

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