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

القواعد الأساسية للغة Scala

إذا كنت مبرمجًا سابقًا في Java وكنت تعرف الأساسيات في لغة Java، فإنك ستعلم قواعد Scala الأساسية بسرعة.

الفرق الأكبر بين Scala وJava هو أن نقطة الوصل في نهاية الجملة في Scala ليست إلزامية.

يمكننا اعتبار برنامج Scala تجمع من الأشياء، التي تتبادل الرسائل عبر دعوات إلى الطرق. دعونا نحاول فهم مفاهيم التصنيف، الأشياء، الطريقة، والمتغيرات المثالية:

  • الأشياء - الأشياء لها خصائص وأفعال. على سبيل المثال: الخصائص المادية للكلب هي: اللون، الاسم، والأفعال مثل: الصراخ، الجري، الأكل وما إلى ذلك. الأشياء هي أمثلة على التصنيف.

  • التصنيف - التصنيف هو抽象 من الأشياء، والأشياء هي أمثلة ملموسة من التصنيف.

  • المتدخل - السلوك الأساسي للوصف للمتدخل، يمكن أن تحتوي الفئة على عدة متداخلين.

  • الحقول - كل كائن له مجموعة متفردة من المتغيرات المثبتة، وهي الحقول. يتم إنشاء خصائص الكائن من خلال تعيين القيم للحقول.

البرنامج الأول لScala

البرمجة التفاعلية

البرمجة التفاعلية لا تحتاج إلى إنشاء ملف سكربت، يمكن التشغيل عبر الأمر التالي:

$ scala
مرحبًا بك في Scala إصدار 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
أدخل تعبيرات لتقييمها.
النوع: help للحصول على مزيد من المعلومات.
scala> 1 + 1
res0: Int = 2
scala> println("Hello World!")
Hello World!
scala>

شكل السكربت

يمكننا أيضًا تشغيل الكود عبر إنشاء ملف HelloWorld.scala، ويكون الكود كالتالي:

object HelloWorld {
   /* هذا هو برنامج Scala الخاص بي
    * البرنامج التالي سيُنتج 'Hello World!' 
    */
   def main(args: Array[String]) {
      println("Hello, world!") // يُنتج Hello World
   }
}

الآن سنستخدم الأمر scalac لتجميعها:

$ scalac HelloWorld.scala 
$ ls
HelloWorld$.class   HelloWorld.scala
HelloWorld.class

بعد التجميع، يمكننا رؤية أن ملف HelloWorld.class تم إنشاؤه في الدليل، ويمكن تشغيل هذا الملف على محرك Java Virtual Machine (JVM).

بعد التجميع، يمكننا استخدام الأمر التالي لتشغيل البرنامج:

$ scala HelloWorld
Hello, world!

مثال على استخدام »

النحو الأساسي

يجب الانتباه إلى النقاط التالية عند استخدام النحو الأساسي لScala:

  • الفرق بين الكتابة الكبيرة والصغيرة - Scala حساس للكتابة الكبيرة والصغيرة، مما يعني أن Hello وhello سيكون لهما معاني مختلفة في Scala.

  • اسم الفئة - يجب أن يكون أول حرف من كل اسم فئة كبيرًا.
    إذا كنت بحاجة إلى استخدام كلمات متعددة لإنشاء اسم فئة، يجب أن تكون أول حرف من كل كلمة كبيرًا.

    مثال:class MyFirstScalaClass

  • اسم الطريقة - الكل من اسم الطريقة يجب أن يبدأ بحرف صغير.
    إذا تم استخدام كلمات متعددة لإنشاء اسم الطريقة، يجب أن تكون أول حرف من كل كلمة كبيرًا.

    مثال:def myMethodName()

  • اسم ملف البرنامج - يجب أن يكون اسم ملف البرنامج مطابقًا تمامًا لاسم الكائن (ليس ضروري في الإصدارات الجديدة، ولكن يُنصح باتباع هذه العادة).
    عند حفظ الملف، يجب حفظه باستخدام اسم الكائن الذي يستخدمه (تذكر أن Scala يفرق بين الحروف الكبيرة والصغيرة)، واضعًا ".scala" كامتداد للملف. (إذا لم يكن اسم الملف مطابقًا لاسم الكائن، لن يتم ترميز البرنامج).

    مثال: افترض أن "HelloWorld" هو اسم الكائن. يجب أن يتم حفظ هذا الملف باسم 'HelloWorld.scala'.

  • def main(args: Array[String]) - يبدأ تنفيذ برنامج Scala من طريقة main()، وهي جزء إلزامي من كل برنامج Scala.

الوسم

يمكن استخدام نوعين من الوسمين في Scala، النصي والأرقامي.

تبدأ وسم الأرقامية بحرف أو خط سفلاء، يمكن أن يتبعها حرف أو رقم، يتم اعتبار الرمز $ كحرف في Scala. ومع ذلك، يجب تجنب استخدام وسمين يبدأان بحرف $ لأنها وسمين محفوظة يتم إنشاؤها من قبل معالج Scala، يجب تجنب استخدام وسمين يبدأان بحرف $ لتجنب الاشتباك.

تبني Scala قواعد التسمية التي تشبه قواعد Java CamelCase، تبدأ بالحرف الصغير، مثل toString. يجب أن يكون الحرف الأول من اسم الكلاس كبيرًا. بالإضافة إلى ذلك، يجب تجنب استخدام وسمين ينتهيان بالخط السفلاء لتجنب الاشتباك. الوسم الرمزي يحتوي على رمز أو أكثر، مثل +،:،?، مثل:

+ ++ ::: < ?> :->

يستخدم Scala وسمًا مكررًا في التنفيذ الداخلي، مثل:-> يستخدم $colon$minus$greater لتعريف هذا الرمز. لذا إذا كنت بحاجة إلى الوصول إلى طريقة:-> في كود Java، يجب عليك استخدام الاسم الداخلي لـ Scala $colon$minus$greater.

المعلمات المختلطة تتكون من وسم أرقامي يتبعه رمز أو أكثر، مثل unary_+ هو الاسم الداخلي لمفهوم + في Scala. وسم نصي هو النص المحدد باستخدام "، مثل `x` `yield`.

يمكنك استخدام أي وسم معتمد من "" بين أي وسمScala، يفسر Scala هذه الوسمات كوسمScala، يستخدم الاستخدام التقليدي لـ Thread.yield()، لا يمكنك استخدام Thread.yield() في Scala لأن yield هو كلمة مفتاحية في Scala، يجب عليك استخدام Thread.`yield`() لاستخدام هذه الطريقة.

كلمات سكالا المحددة

الجدول التالي يبين الكلمات المحددة في سكالا، لا يمكن استخدام الكلمات التالية كمتغيرات:

abstractcasecatchclass
defdoelseextends
falsefinalfinallyfor
forSomeifimplicitimport
lazymatchnewnull
objectoverridepackageprivate
protectedreturnsealedsuper
thisthrowtraittry
truetypevalvar
whilewithyield 
-:==>
<-<:<%>:
#@

تعليقات سكالا

تدعم سكالا التعليقات السطرية والمتعددة. يمكن تضمين التعليقات المتعددة، ولكن يجب أن تكون محاطة بشكل صحيح، يجب أن تتطابق علامة البداية بعلامة النهاية. يتم تجاهل التعليقات أثناء التجميع، مثل المثال التالي:

object HelloWorld {
   /* هذا برنامج سكالا
    * تعليق سطر
    * يوضح هذا التعليق المتعدد الأسطر
    */
   def main(args: Array[String]) {
      // إدخال Hello World
      // هذا تعليق سطر واحد
      println("مرحبًا، العالم!") 
   }
}

السطور الفارغة والمسافات

إذا كانت سطر واحدة تحتوي فقط على مسافات أو تعليقات، فإن سكالا تعتبرها سطر فارغ وتتجاهلها. يمكن تقسيم العلامات بالمسافات أو التعليقات.

إعادة التوجيه

سكالا لغة تعتمد على السطر، يمكن إتمام الجملة باستخدام نقطة السطر أو إعادة التوجيه. عادة ما تكون نقطة السطر في سكالا اختيارية. يمكنك إدخالها إذا كنت ترغب في ذلك، ولكن إذا كانت هناك جملة واحدة فقط في السطر، يمكن كتابة جملة واحدة دون كتابةها. من جهة أخرى، إذا تم كتابة عدة جمل في سطر واحد، فإن نقطة السطر ضرورية. على سبيل المثال

السطر val s = "موقع التعليم الأساسي"; println(s)

ملف سكالا

تعريف الملف

استخدم سكالا كلمة المفتاح package لتعريف الملف، هناك طريقتان لتحديد الكود في سكالا:

الطريقة الأولى مثل جافا، تعريف اسم الملف في بداية الملف، ويوضع جميع الكود في هذا الملف. على سبيل المثال:

بكيتاكوم.و3كودبوككس
class HelloWorld

الطريقة الثانية تشبه C#، مثل: }}

package com.w3codebox {
  class HelloWorld 
}

الطريقة الثانية، يمكنك تعريف عدة حزم في ملف واحد.

الاستيراد

استخدم Scala الكلمة المفتاحية import لاستيراد الحزم.

import java.awt.Color // إدخال Color
 
import java.awt._ // إدخال جميع أعضاء الحزمة
 
def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent
  ... // لأن تم إدخال java.awt، يمكن تجنب الجزء الأول
}

يمكن أن تظهر تعليمات الاستيراد في أي مكان وليس فقط في أعلى الملف. تأثير الاستيراد يبدأ من البداية ويصل إلى نهاية الكتلة. هذا يمكن أن يقلل من احتمالية حدوث تضارب الأسماء.

إذا كنت ترغب في إدخال بعض أعضاء الحزمة، يمكنك استخدام selector (المختار):

import java.awt.{Color, Font}
 
// إعادة تسمية العضو
import java.util.{HashMap => JavaHashMap}
 
// إخفاء العضو
import java.util.{HashMap => _, _} // تم إدخال جميع أعضاء حزمة util، ولكن تم إخفاء HashMap

ملاحظة:بالتأكيد، Scala دائمًا ما تقوم بإدخال java.lang._ و scala._ و Predef._، ويمكن أيضًا تفسير لماذا تكون الحزم التي تبدأ بـ scala. مكتوبة دون scala. عند استخدامها.