Latest web development tutorials

ปิดสกาล่า

ฟังก์ชั่นสกาล่า ฟังก์ชั่นสกาล่า

ปิดเป็นฟังก์ชันที่ส่งกลับค่าขึ้นอยู่กับการประกาศภายนอกในฟังก์ชั่นหรือตัวแปรมากขึ้น

การปิดโดยทั่วไปถือว่าเป็นแค่ฟังก์ชั่นอื่นภายในฟังก์ชันสามารถเข้าถึงตัวแปรท้องถิ่น

ฟังก์ชั่นที่ไม่ระบุชื่อดังต่อไปนี้:

val multiplier = (i:Int) => i * 10  

ร่างกายทำงานมีฉันตัวแปรเป็นพารามิเตอร์ฟังก์ชั่น อีกชิ้นหนึ่งของรหัสดังต่อไปนี้:

val multiplier = (i:Int) => i * factor

มีสองตัวแปรในตัวคูณคือฉันและปัจจัย ที่ฉันเป็นพารามิเตอร์ที่อย่างเป็นทางการของฟังก์ชั่นการทำงานที่เรียกว่าเมื่อคูณผมได้รับค่าใหม่ อย่างไรก็ตามปัจจัยที่ไม่ได้เป็นพารามิเตอร์ที่เป็นทางการ แต่ตัวแปรอิสระพิจารณารหัสต่อไปนี้:

var factor = 3  
val multiplier = (i:Int) => i * factor  

ที่นี่เราแนะนำเป็นปัจจัยตัวแปรอิสระตัวแปรนี้ถูกกำหนดไว้ด้านนอกของฟังก์ชั่น

ตัวแปรฟังก์ชั่นคูณจึงกำหนดให้เป็น "ปิด" เพราะมันหมายถึงตัวแปรนอกนิยามฟังก์ชันที่นิยามของกระบวนการของฟังก์ชั่นนี้คือการจับตัวแปรอิสระที่ประกอบขึ้นเป็นฟังก์ชั่นปิด

ตัวอย่างที่สมบูรณ์

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  
}  

เล่นอินสแตนซ์»

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ scalac Test.scala  
$  scala Test  
muliplier(1) value = 3  
muliplier(2) value = 6  

ฟังก์ชั่นสกาล่า ฟังก์ชั่นสกาล่า