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

Это должно быть легко. Как применить функцию к кортежу в 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 
  • Вызовите по имени vs call по значению в Scala, необходимо разъяснение
  • Перегрузка конструктора Scala?
  • Как создать TypeTag вручную?
  • В чем разница между =>, () => и Unit =>
  • Как импортировать build.gradle в IntelliJ
  • Подчеркивание в именованных аргументах
  • Прочитать весь файл в Scala?
  • Что такое функция приложения в Scala?
  • Почему функции scala ограничены 22 параметрами?
  • Как перечислить все файлы в подкаталоге в scala?
  • Примеры монады штата Скалаз
  • Interesting Posts

    Как получить PID процесса, который я только начал в java-программе?

    Указатель мыши в моей виртуальной машине Ubuntu превратился в небольшую руку с документом, а клики игнорируются. Как выйти из этого режима?

    Как протоколировать сообщения Trace с log4net?

    Синглтоны против контекста приложения в Android?

    Разрешения IIS_IUSRS и IUSR в IIS8

    Как я могу остановить повторное позиционирование окон после пробуждения от сна?

    c ++ рабочие очереди с блокировкой

    Как использовать программный доступ к памяти через JMX?

    ItemPropertyChanged не работает на наблюдаемомколлекции.Почему?

    Как SQL Server сортирует ваши данные?

    Использование запроса Hibernate: двоеточие обрабатывается как параметр / экранирование двоеточия

    Сервис, запускающий процесс, не отображает GUI C #

    Как удалить пакет из Laravel с помощью композитора?

    Что можно безопасно удалить из папки «C: \ WINDOWS»?

    Как связать команду в WPF с обработчиком события двойного щелчка элемента управления?

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