Latest web development tutorials

Scala fungsi currying (currying)

fungsi scala fungsi scala

Currying (currying) mengacu pada fungsi asli menerima dua parameter ke fungsi baru menerima parameter proses. Sebuah fungsi baru mengembalikan parameter kedua adalah fungsi asli dari parameter.

contoh

Pertama, kita mendefinisikan fungsi:

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

Jadi ketika kita diterapkan, harus digunakan seperti ini: add (1,2)

Sekarang kita melihat bentuk perubahan fungsi ini:

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

Jadi ketika kita diterapkan, harus digunakan seperti ini: add (1) (2), hasil akhir yang sama adalah 3, pendekatan ini (proses) disebut currying.

proses implementasi

tambahkan (1) (2) sebenarnya fungsi pada gilirannya panggilan dua biasa (fungsi non-kari), panggilan pertama menggunakan parameter x, nilai kembali dari tipe fungsi, dan parameter kedua y menyebut jenis fungsi ini nilai.

Pertama dasarnya berkembang menjadi sebuah metode:

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

Maka fungsi ini adalah apa artinya? Menerima x sebagai parameter dan mengembalikan fungsi anonim, definisi fungsi anonim adalah: menerima Int argumen y, fungsi tubuh adalah x + y. Sekarang kita memanggil metode ini.

val result = add(1) 

Mengembalikan Akibatnya, nilai hasil yang harus fungsi anonim: (y: Int) => 1 + y

Jadi untuk mendapatkan hasil, kami terus memanggil hasilnya.

val sum = result(2)

Akhirnya, mencetak hasil adalah 3.

contoh lengkap

Berikut ini adalah contoh lengkap:

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
   }
}

Pelaksanaan kode di atas, output adalah:

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

fungsi scala fungsi scala