Как применить функцию к кортежу?

Это должно быть легко. Как применить функцию к кортежу в Scala? Viz:

 scala> def f (i: Int, j: Int) = i + j
 f: (Int, Int) Int

 scala> val p = (3,4)
 p: (Int, Int) = (3,4)

 scala> fp
 : 6: ошибка: отсутствующие аргументы для метода f в объекте $ iw;
 следуйте этому методу с помощью `_ ', если вы хотите рассматривать его как частично примененную функцию
        Ф.П.
        ^

 scala> f_p
 : 6: ошибка: значение p не является членом (Int, Int) => Int
        f _ p
            ^

 scala> (f_) p
 : 6: ошибка: значение p не является членом (Int, Int) => Int
        (f_) p
              ^

 scala> f (p)
 : 7: ошибка: неправильное количество аргументов для метода f: (Int, Int) Int
        е (р)
        ^

 scala> grr!

Спасибо заранее.

В Scala 2.7:

scala> def f (i : Int, j : Int) = i + j f: (Int,Int)Int scala> val ff = f _ ff: (Int, Int) => Int =  scala> val fft = Function.tupled(ff) fft: ((Int, Int)) => Int =  

В Scala 2.8:

 scala> def f (i : Int, j : Int) = i + j f: (i: Int,j: Int)Int scala> val ff = f _ ff: (Int, Int) => Int =  scala> val fft = ff.tupled fft: ((Int, Int)) => Int =  

Следуя другому ответу, можно написать (проверено с 2.11.4):

 scala> def f (i: Int, j: Int) = i + j f: (i: Int, j: Int)Int scala> val ff = f _ ff: (Int, Int) => Int =  scala> val p = (3,4) p: (Int, Int) = (3,4) scala> ff.tupled(p) res0: Int = 7 

См. Def tupled: ((T1, T2)) ⇒ R :

Создает корневую версию этой функции: вместо 2 аргументов он принимает один аргумент scala.Tuple2 .

 scala> def f (i: Int, j: Int) = i + j f: (i: Int, j: Int)Int scala> val p = (3,4) p: (Int, Int) = (3,4) scala> val ft = (f _).tupled ft: ((Int, Int)) => Int =  scala> ft apply(p) res0: Int = 7 
  • Отладка Scala-кода с помощью простого-build-инструмента (sbt) и IntelliJ
  • Как вы делаете инъекцию зависимостей с шаблоном Cake без hardcoding?
  • Требуется уточнение для лирических идентификаторов Scala (backticks)
  • Подчеркивание в именованных аргументах
  • Как создать TypeTag вручную?
  • Как работает «scala.sys.process» от Scala 2.9?
  • Scala: передать функции Seq в var-args
  • Как импортировать build.gradle в IntelliJ
  • Могу ли я получить список времени компиляции всех объектов case, которые происходят из запечатанного родителя в Scala?
  • Как добавить переменную в Scala?
  • Перегрузка конструктора Scala?
  • Interesting Posts

    Доступ к инжектору Guice в его модуле?

    Почему современный Perl избегает UTF-8 по умолчанию?

    Селеновые множественные вкладки одновременно

    Папка продолжает меняться обратно в режим «только для чтения». Какая настройка разрешений вызывает это в Windows?

    Сравнивая две строки, игнорируя регистр в c #

    Swift playground – Как преобразовать строку с запятой в строку с десятичной запятой

    JRE 1.7 – версия java – возвращает: java / lang / NoClassDefFoundError: java / lang / Object

    Программно отображает представление из подключаемого модуля Eclipse

    Как исправить «Точка останова в настоящее время не будет удалена. Для этого документа не были загружены символы. “Предупреждение?

    как получить текущее местоположение в google map android

    Cocoa Touch: как изменить цвет и толщину границ UIView?

    Добавление заголовков Http в HttpClient

    Имя пользователя ASP.Net для электронной почты

    Как узнать настройки порта и завершения порта для перенаправления портов?

    filterArrayUsingPredicate не существует в быстром массиве

    Давайте будем гением компьютера.