English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الطرق والوظائف لـ Scala

def

  
  
}

يتم تعريف الوظيفة باستخدام def يبدأ بكلمة المفتاح، يتبعه قائمة الأنواع الإرشادية، يتبعها شرطًا مائلاً :، ثم نوع العودة، يتبعه إشارة المساواة =، وأخيرًا جسم الوظيفة.

يبدو شكل تعريف الوظيفة في Scala كالتالي:

def functionName([قائمة الأنواع]) : [نوع العودة] = {
   جسم الوظيفة
   إرجاع [expr]
}

في الكود التالي نوع العودة يمكن أن تكون أي نوع من البيانات المشروعة لـ Scala. يمكن استخدام الثوابت في قائمة الأنواع المقدمة بالكومياء.

يستهدف هذا الطريقة إضافة متغيرين معقدين وإرجاع الناتج النهائي:

object add{
   def addInt( a: Int, b: Int ) : Int = {
      var sum: Int = 0
      sum = a + b
      return sum
   }
}

إذا لم يكن هناك قيمة عائدة للمتغير، يمكن العودة إليها كـ Unit، يشبه Java void، مثالًا كما يلي:

object Hello{
   def printMe(): Unit = {
      println("Hello, Scala!")
   }
}

println("Hello, Scala!")

استدعاء الطريقة

هناك أنواع متعددة من طرق استدعاء الطريقة يقدمها Scala:

functionName( قائمة المعلمات )

إذا استخدمت الطريقة باستخدام الصفحة أو الشئ، يمكننا استخدام نمط مشابه لـ Java (استخدام . ):

[instance.]functionName( قائمة المعلمات )

المثال أعلاه يوضح كيفية تعريف وتشغيل الطريقة:

object Test {
   def main(args: Array[String]) {
        println( "Returned Value: " + addInt(5,7) );
   }
   def addInt( a: Int, b: Int ) : Int = {
      var sum: Int = 0
      sum = a + b
      return sum
   }
}

إذا قمت بتشغيل الكود أعلاه، سيكون الناتج:

$ scalac Test.scala 
$ scala Test
Returned Value: 12

Scala هي لغة برمجة تقوم على الفونكشناليتي، لذا هي الوظيفة هي قلب لغة Scala. بعض مفاهيم الوظائف التالية ستساعدنا على فهم أفضل لبرمجة Scala:

تحليل مفهوم الوظائف وتطبيقاتها
الاستدعاء بالاسم (Call-by-Name)تسمية معلمات الوظائف
الوظائف - المعلمات القابلة للتغييرالوظائف المتكررة (Recursive Functions)
القيم الافتراضية للمعلماتالوظائف العليا (Higher-Order Functions)
الوظائف المدمجة (Nested Functions)الوظائف الغير مرئية (Anonymous Functions)
التحويل المحدود (Partial Application)التحويل الكووري (Function Currying)