Penutupan skala
Fungsi Scala
Penutupan ialah fungsi yang nilai pulangannya bergantung pada satu atau lebih pembolehubah yang diisytiharkan di luar fungsi.
Penutupan secara amnya boleh dianggap hanya sebagai fungsi lain yang boleh mengakses pembolehubah setempat dalam fungsi.
Contohnya, fungsi tanpa nama berikut:
val multiplier = (i:Int) => i * 10
Terdapat pembolehubah i dalam badan fungsi, yang digunakan sebagai parameter fungsi. Sebagai satu lagi kod di bawah:
val multiplier = (i:Int) => i * factor
Terdapat dua pembolehubah dalam pengganda: i dan faktor. Salah satu daripada i ialah parameter formal fungsi Apabila fungsi pengganda dipanggil, i diberikan nilai baharu. Walau bagaimanapun, faktor bukan parameter formal, tetapi pembolehubah bebas Pertimbangkan kod berikut:
var factor = 3 val multiplier = (i:Int) => i * factor
Di sini kami memperkenalkan faktor pembolehubah bebas, yang ditakrifkan di luar fungsi.
Pengganda pembolehubah fungsi yang ditakrifkan dengan cara ini menjadi "penutupan" kerana ia merujuk kepada pembolehubah yang ditakrifkan di luar fungsi Proses mentakrifkan fungsi ini adalah untuk menangkap pembolehubah bebas ini untuk membentuk fungsi tertutup.
Contoh lengkap
object Test { def main(args: Array[String]) { println( "muliplier(1) value = " + multiplier(1) ) println( "muliplier(2) value = " + multiplier(2) ) } var factor = 3 val multiplier = (i:Int) => i * factor }
Laksanakan kod di atas, hasil output ialah:
$ scalac Test.scala $ scala Test muliplier(1) value = 3 muliplier(2) value = 6