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  

وظيفة سكالا وظيفة سكالا