الاطلاع على الدورة الأخيرة التي أطلقتها DataCamp للغة Scala: مقدمة في Scala.
Scala تستخدم بشكل واسع من قبل علماء البيانات عند التعامل مع الكميات الضخمة من البيانات المستخدمة مع Apache Spark معا في مجال البيانات الضخمة. إنه لغة برمجة تعتمد على الأشياء والوظائف ويمتلك ميزات أخرى ضرورية وهي التالية:
- تعرف Scala على أنها لغة ذات نوع ساكن، حيث يُحدد نوع البيانات للمتغير قبل استخدامه. يتم التحقق من النوع في وقت التركيب بدلاً من وقت التشغيل.
- إنها أيضًا لغة “معنية بالنوع” حيث يتم التحقق من المتغيرات قبل القيام بعملية عليها.
- وهي أيضًا تدعم استنتاج النوع، حيث يستنتج المترجم النوع من التعبير أو العبارات الحرفية، لذا فإن إعلان نوع المتغير اختياري.
في هذا التعليم، ستغطي الأمور التالية:
- المتغيرات
- قواعد تعريف المتغيرات في Scala
- المتغيرات المتغيرة
- المتغيرات غير المتغيرة
- الإعلانات المتعددة والتعيينات
- نطاق المتغيرات في سكالا
المتغيرات
المتغيرات هي المساحة المسماة في الذاكرة، ويحدد المصرفر مكانا محجوزا وفقاً لنوع البيانات المتصل بالمتغير. يتم تعريف المتغير في سكالا بالسيntax التالي:
val or val variable_name: variable_datatype = value;
في الهيئة السابقة، يمكن تعريف المتغير بأحد الطرقين باستخدام كلمة ‘var’ أو ‘val’. يتألف من ‘اسم_المتغير’ كمتغير جديد لديك، متبوأ بفوقة. نوع بيانات المتغير هو ‘نوع_بيانات_المتغير.’ ويمكن أن يكون أي نوع بيانات صالح. بعد ذلك ‘القيمة’، تحدد الرمز ل’اسم_المتغير’.
على سبيل المثال:
val varValue: Byte = 8;
‘val’ هو كلمة لتعريف المتغير، و ‘varValue’ هو اسم المتغير. إنه من نوع البيانات ‘Byte’ ويحتوي على القيمة 8. ‘Byte’ هو قيمة موقوتة 8-بت، وتتراوح من 2−7 إلى 27−1.
‘نوع_بيانات_المتغير’ أعلاه يمكن أن يكون أي نوع بيانات موجود في سكالا وهي كما يلي.
- Int: هو قيمة موقوتة 32 بت، سigned (قيمة إيجابية أو سلبية)، ولها نطاق من 2−31 إلى 231−1.
- Byte: هو قيمة موقوتة 8-بت، وتتراوح من 2−7 إلى 27−1.
- Short: هو قيمة موقوتة 16-بت تتراوح من 2−15 إلى 215−1.
- Float: يمكن أن يكون إما 32 بت أو 64 بت.
وبالمثل، أنواع البيانات الأخرى مثل Long، Char، Boolean، Char، String، Boolean، Null تتكون من نطاقها الخاص، ويتم إعطاء تفسير مفصل في دليل المبتدئين إلى سكالا. أيضًا، يجب أن يبدأ ‘variable_datatype’ بحرف كبير، أي أن Int يحتوي على ‘I’، مما يشير إلى أن جميع أنواع البيانات المذكورة أعلاه هي كائنات في سكالا.
قواعد تعريف المتغيرات في سكالا
القواعد والاتفاقيات لتعريف المتغيرات في سكالا هي كما يلي:
- يبدأ اسم المتغير بحالة الجمل الصغرى. على سبيل المثال، في اسم المتغير ‘nameOfGirl’، يحتوي على ‘n’ كحرف صغير. بعد ذلك، يتم تكبير جميع الحروف الأولى من الكلمة مثل ‘O’ و ‘G’.
- يجب ألا يحتوي اسم المتغير على الكلمة المحجوزة أو الكلمة المفتاحية المعرفة في سكالا.
- يمكن أن يحتوي اسم المتغير على علامة الدولار (‘$’) وعلامة التسطير (‘_’). ومع ذلك، لا يُسمح باستخدام الأحرف الخاصة الأخرى مثل ‘#’,’&’، إلخ. كما أن استخدام التسطير غير مشجع.
- المسافات البيضاء (العلامات، الفراغ) غير مسموح بها في اسم المتغير.
- يجب أن يبدأ اسم المتغير بحرف ولا يمكن أن يبدأ برقم أو أحرف أخرى.
المتغيرات القابلة للتغيير
تسمح المتغيرات القابلة للتغيير بتغيير قيم المتغيرات حتى بعد إعلان المتغيرات.
يظهر بناء الجملة للمتغير القابل للتغيير أدناه:
var variable_name : variable_datatype = value;
تعريف النمط السينتكسي للمتغير القابل للتغيير يمكن أيضًا أن يكون:
var variable_name = value;
إليك مثال للمتغير القابل للتغيير:
var nameOfThing: String = "Car";
المثال السابق يحتوي على var
ككلمة مفتاح لتعريف المتغيرات القابلة للتغيير. تسمى المتغير ‘nameOfThing’. يتبعها نقطة فارغة مع نوع المتغير كـ ‘String’. ستتخزين قيمته في الذاكرة كـ ‘Car’.
يمكن إنجاز مثال للمتغير القابل للتغيير بنمط مختلف مثل التالي:
var nameOfThing = "Car";
يمكنك تعريف متغيرك بدون نوع بيانات المتغير، كما يمكن في السبب السابق. متحكم المحرر السكالي يحدده تلقاء ذاكرة بنوعه ‘String’ وهو ما يدعى تخمين النوع.
يمكنك تغيير قيمة المتغير بسهولة مثل التالي:
nameOfThing = "Bike"; print(nameOfThing)
ستغير قيمة المتغير من “Car” إلى “Bike”. الناتج سيكون “Bike” لأن كلمة المفتاح ‘var’ تسمح لك بتغيير قيمة المتغير (مصدر: المتغيرات في Scala).
المتغيرات الغير قابلة للتغيير
تعريف المتغيرات الغير قابلة للتغيير هو أنها متغيرات لا يمكن تغيير قيمتها بعد إنشائها ويُعرّف بـ ‘val’ كلمة مفتاح.
تعريف نمط المتغير الغير قابل للتغيير يوضح التالي:
val variable_name : variable_data type = value;
يمكن تعريف نمط المتغير الغير قابل للتغيير أيضًا كما يلي:
val variable_name = value;
إليك مثال للمتغير الغير قابل للتغيير:
val numberOfThing: Int = 2;
النص أعلاه يحتوي على كلمة الأمر val
ككلمة رئيسية لتعريف المتغيرات الثابتة واسم المتغير كـ ‘numberOfThing.’ يتبعها فاصلة وتعريف نوع البيانات للمتغير كـ ‘Int’ بالإضافة إلى قيمة المتغير في الذاكرة هي 2.
يمكن إنشاء المتغيرات الثابتة بشكل مختلف كما يلي أسفلًا:
val numberOfThing = 2;
يمكنك تعريف المتغير دون تحديد نوع البيانات للمتغير كما يلي أعلاه، حيث يحدد مفسر سكالا التنقيب على النوع ‘Int’ تلقائيًا. العملية تسمى التنقيب على النوع (المصدر: المتغيرات في سكالا).
لا يمكنك تغيير قيمة المتغير كما يلي أسفلًا:
numberOfThing = 7;
سيؤدي النموذج أعلاه إلى خطأ مثل “خطأ: لم يتم العثور على قيمة numberOfThing”، وهذا يظهر أن إعادة تعيين القيمة ليس ممكنًا كما يلي أسفلًا :
تعليمات المتغيرات المتعددة والتعيينات
يمكن تعيين المتغيرات المتعددة في سكالا باستخدام كلمة الأمر ‘var’ مع اسم المتغير مفصول بفواصل وعلامة “=” مع قيمة المتغير.
var (x, y, z) = (5, 4.5, "Sit")
في النموذج أعلاه، يمكنك أن ترى جميع المتغيرات x, y, و z يتم تعيينها لقيمة 5, 4.5 و “Sit” تبعاً لهذا التسلسل كما يلي أسفلًا.
يمكن تعيينات متعددة في سكالا في سطر واحد باستخدام كلمة الأمر ‘val’ مع اسم المتغير مفصول بفواصل وعلامة “=” مع قيمة المتغير.
val a, b, c = 1;
في النموذج أعلاه، يمكنك أن ترى جميع المتغيرات a, b, و c تتم تعيينها لقيمة 1 كما يلي أسفلًا.
المجال للمتغير
النطاق هو وضوح الvariables التي لديها فترة العمر داخل البلوكات المحددة من الكود. يمكن تعريف المتغير في النطاق المحلي أو العالمي. على سبيل المثال:
var globalVar = 10 def sub(){ var difference = 9-4; } print(difference)//خطأ print(globalVar)//صالح
في الكود أعلاه، المتغير ‘difference’ في النطاق المحلي حيث يُعرف داخل الطريقة ‘sub’، وسيعطي عملية الاستبعاد النتائج الصحيحة، ولكن الطباعة القيمة خارج الطريقة ‘sub’ ستسبب خطأ. هناك أيضًا نطاق عالمي حيث يمكن الوصول إلى المتغير ‘globalVar’ في أي مكان في البرنامج، ويمكن إجراء أي عمليات عليه.
هناك ثلاثة أنواع من نطاق المتغيرات في Scala (المصدر: Scala- المتغيرات):
- المتغيرات المحلية
- الحقول
- معايرات الطريقة
المتغيرات المحلية
المتغيرات المحلية هي متغيرات قابلة للتغيير أو غير قابلة للتغيير التي يتم إعلانها داخل طريقة ويمكن الوصول إليها فقط داخل الطرق وليس خارجها.
يمكنك مشاهدة العينة البسيطة أدناه لمعرفة المتغيرات المحلية:
class Perimeter { def triangle() { var side1 = 10; var side2 = 20; var side3 = 30; var total = side1+side2+side3; print("Perimeter of the triangle is: " + total); } } object Test { def main(args:Array[String]) { val p1 = new Perimeter() p1.triangle() } }
defined class Perimeter defined object Test
سيعطي الكود أعلاه النتيجة:
الحد الخارجي للثلاثي تماثل: 60
يحتوي البرنامج أعلاه على صنف يُدعى ‘Perimeter’ وهيئة لتكون ‘Test’ حيث يوجد طريقة تُدعى الثلاثي ولها ثلاث متغيرات قابلة للتغيير كـ side1، side2، side3. سيتم إجراء الحساب وطباعة النتيجة داخل الطريقة، والتي ستعطي الخرج الصحيح.
الحقول
هذه المتغيرات التي تم تعريفها داخل التصنيف تعرف بأنها متغيرات الحقول التي يمكن أن تكون متغيرات قابلة للتغير أو غير قابلة للتغير. سيكون المُعَرِض الآلي بالفعل العام إذا تم تعريف المتغير داخل التصنيف ، ولكن لا يجب أن يتم تعريفه داخل أي وظيفة حيث يكون المتغير قابل للAcces في أي مكان في البرنامج. مع ذلك ، يمكن الوصول إلى المتغير الخاص داخل التصنيف المعروف ولكن لا يمكن الوصول خارج نطاق التصنيف أو حتى في المجموعة أيضًا.
class FieldExample { var value1 = 10; private var value2 = 30; def operation() { println("Value of value1:"+value1) } println("Value of value2: "+value2); } object Demo { def Main(args:Array[String]) { val obj = new FieldExample() obj.operation() print(obj.value1)//Valid print(obj.value2) } }
defined class FieldExample defined object Demo
الشيء الأعلى المكتوب يعطي النتيجة:
Value of value2: 30
Value of value1:10
10
البرنامج الذي يحتوي في الأعلى تحديدًا على تصنيف يدعى ‘FieldExample’, معرفيًا للتجريد ‘Demo’ وطريقة واحدة تدعى ‘operation’. المتغير العام بإسم value1 يمكن الوصول بواسطة نمط النقطة التي تحمل قيمة 10. المتغير الخاص بإسم value2 يوجد 30 حيث أن الوصول إلى هذا المتغير وتم نشره سيسبب خطأ.
معاملات المتغيرات
تلك المتغيرات التي تقبل قيمة عند استدعاء المعاملة والتي يجب أن تكون قابلة للتغير وتعرف باسم ‘val’. أيضًا يمكن الوصول إلى المتغير خارج المعاملة بوجود إشارة له.
يمكنك رؤية المثال البسيط التالي لمعرفة بشأن معاملات المتغيرات:
class Triangle { def calculate(height: Int, width: Int) { var result = 0.5*(height+width); println("Area of triangle is: " + result); } } object Area { def main(args:Array[String]) { val a = new Triangle() a.calculate(4,5); } }
defined class Triangle defined object Area
الشيء الأعلى المكتوب يعطي النتيجة:
Area of triangle is:
البرنامج أعلاه يحتوي على صنف يُدعى ‘Triangle.’ يتضمن طريقة تُدعى ‘calculate’ مع شموخين واسميهما الارتفاع والعرض. القيمة العددية 4 و 5 تُمرر عندما يُنادي ‘calculate’ باستخدام مثال الكائن a.
الخاتمة
مبارك لك، لقد وصلت إلى نهاية هذا التعليم!
في هذا التعليم، تغطيت عن متغيرات سكالا، قواعد تعريف المتغيرات، أنواع مختلفة من المتغيرات مع إعلان وتعيين متعدد وبالإضافة إلى مجال متغير فيه.
إذا كنت ترغب في تعلم المزيد عن سكالا، أخذ دورة DataCamp مقدمة إلى سكالا.
Source:
https://www.datacamp.com/tutorial/variables-in-scala