0
В Scala, я мог бы генерировать каррированную функцию следующим образом:Порядка аргументов в карри Scala Функция
def multiply(m: Int)(n: Int): Int = (m + 1) * (n + 2)
Если бы я хотел, я мог бы генерировать новую функцию, заполняя что первый параметр, например, так:
val timesTwo = multiply(1) _
Но каков синтаксис для замены второго аргумента, а не первого?
val timesThree = multiply _ (1) // Incorrect Syntax
Что еще более важно, почему не прямая параллель с multiply(1) _
?
Мне нравится 'умножим (_: Int) (1)'. Благодаря! Но почему синтаксис не является более параллельным с 'multiply (1) _'? – theJollySin
См. Раздел 6.7 справочника Scala (http://www.scala-lang.org/files/archive/nightly/pdfs/ScalaReference.pdf). _ В 'multiply (1) _' не является заполнителем для анонимных параметров функции, таких как' multiply (_: Int), а скорее специальный синтаксис для принудительного преобразования методов в функции («eta-expansion») , Что касается того, зачем нужны явные типы, я понятия не имею. – wingedsubmariner