Latest web development tutorials

Scala функция карринг (Карринг)

функция Scala функция Scala

Карринг (Карринг) относится к оригиналу функция принимает два параметра в новой функции принимает параметр процесса. Новая функция возвращает второй параметр является оригинальной функцией параметра.

примеров

Во-первых, мы определим функцию:

def add(x:Int,y:Int)=x+y

Таким образом, когда мы применили, он должен быть использован следующим образом: добавить (1,2)

Теперь мы смотрим на эту форму изменения функции:

def add(x:Int)(y:Int) = x + y

Поэтому, когда мы применили, она должна использоваться следующим образом: добавить (1) (2), конечные результаты одинаковы 3, этот подход (процесс) называется карринг.

процесс внедрения

Добавить (1) (2) фактически функция в свою очередь, вызывает две обычные (не кэрри функции), первый вызов с использованием параметра х, возвращаемое значение типа функции, а второй параметр у вызывать эту функцию типа значение.

Первый по сути превратилась в метод:

def add(x:Int)=(y:Int)=>x+y

Тогда эта функция является то, что это значит? Прием х в качестве параметра и возвращает анонимную функцию, определение анонимной функции: прием аргумента у Int, функция тела х + у. Теперь мы называем этот метод.

val result = add(1) 

Возвращает результат, значение этого результата должна быть анонимной функцией: (у: Int) => 1 + у

Так что для того, чтобы получить результаты, мы продолжаем называть результат.

val sum = result(2)

И, наконец, распечатать результат 3.

Полный пример

Ниже приведен полный пример:

object Test {
   def main(args: Array[String]) {
      val str1:String = "Hello, "
      val str2:String = "Scala!"
      println( "str1 + str2 = " +  strcat(str1)(str2) )
   }

   def strcat(s1: String)(s2: String) = {
      s1 + s2
   }
}

Реализация указанного выше кода, выход:

$ scalac Test.scala
$ scala Test
str1 + str2 = Hello, Scala!

функция Scala функция Scala