משתנים ב-Scala

הייתם רוצים לבדוק את הקורס החדש של DataCamp בסקלה: הקורס המקדם לסקלה.

סקלה משמש ברחבי המדע הנתוני על ידי מדעני הנתונים בשימוש ב- Apache Spark בתחום הדיגיטלי הגדול. זו שפה של תכנות מונחה ופונקציונלית עם מספר תכונות חשובות אחרות שבאגף למטה:

  1. סקלה היא שפה מדווחה סטטית, בה סוג המידע של המשתמש מוגדר לפני שימוש בו. בדיקת הסוגים מתבצעת בעוני ההוספה במקום ההרגשה.
  2. היא גם שפה "מוגדרת חזק" בה מערכים מובדקים לפני שימוש בהם פעולה.
  3. היא גם תומכת בהבנת סוגים מקבעה, בה המבנה המקובע מאשר את הסוג מהתווים או המשתמשים, כך שההצגה של סוג המשתמש היא אפשרית.

במדריך ההדרכה הזה, תסתכלו על הנושאים הבאים:

משתנים

משתנים הם חלל שנקרא בשם בזיכרון, והמהדר מקצה מיקום שמור בהתאם לסוג הנתונים של המשתנה המתאים. המשתנה מוצהר בסקאלה עם התחביר הבא כדלקמן:

val or val variable_name: variable_datatype = value;

בתחביר הנ"ל, המשתנה יכול להיות מוגדר באחת משתי דרכים באמצעות המילה השמורה 'var' או 'val'. הוא מורכב מ-'variable_name' כמשתנה החדש שלך, ואחריו נקודתיים. סוג הנתונים של המשתנה הוא 'variable_datatype.' שיכול להיות כל סוג נתונים תקף. לאחר מכן 'value', הסמל מקבל הקצאה ל-'variable_name.'

לדוגמה:

val varValue: Byte = 8;

המילה השמורה 'val' מיועדת להגדיר את המשתנה, ו-'varValue' הוא שם המשתנה. הוא מסוג הנתונים 'Byte' ומכיל את הערך 8. 'Byte' הוא ערך חתום של 8 סיביות, אשר נע בין 2−7 ל-27−1.

ה-'variable_datatype' הנ"ל יכול להיות כל סוג נתונים שקיים בסקאלה וקיימים כדלקמן.

  1. Int: הוא ערך חתום של 32 סיביות (חיובי או שלילי), שיש לו טווח מ-2−31 עד 231−1.
  2. Byte: הוא ערך חתום של 8 סיביות שיש לו טווח מ-2−7 עד 27−1.
  3. Short: הוא ערך חתום של 16 סיביות שיש לו טווח מ-2−15 עד 215−1.
  4. Float: הוא יכול להיות או 32 סיביות או 64 סיביות.

באופן דומה, סוגי נתונים אחרים כמו Long, Char, Boolean, Char, String, Boolean, Null מורכבים מהטווח שלהם, והסבר מפורט ניתן במדריך Beginner’s Guide to Scala. כמו כן, 'variable_datatype' צריך להתחיל באות גדולה, כלומר Int מכיל 'I', מה שמצביע על כך שכל סוגי הנתונים הנ"ל הם אובייקטים ב-Scala.

חוקים להגדרת משתנים ב-Scala

החוקים והנוהג להגדרת משתנים ב-Scala הם כדלקמן:

  1. שם המשתנה מתחיל באותיות קטנות בהתאם למוסכמה של lower camel case. לדוגמה, בשם המשתנה 'nameOfGirl', האות 'n' היא אות קטנה. לאחר מכן, יש להגדיל את כל האותיות הראשונות של המילים כמו 'O' ו-'G'.
  2. שם המשתנה לא צריך להכיל מילה שמורה או מילות מפתח המוגדרות ב-Scala.
  3. שם המשתנה יכול להכיל סימן דולר ('$') וסימן קו תחתון ('_'). עם זאת, תווים מיוחדים אחרים כמו '#','&' וכדומה אינם מותרים. כמו כן, השימוש בקו תחתון אינו מומלץ.
  4. רווח לבן (כמו טאב, רווח) אינו מותר בשם המשתנה.
  5. שם המשתנה חייב להתחיל באות ואינו יכול להתחיל במספר או בתו אחר.

משתנים משתנים

משתנים משתנים מאפשרים לשנות את הערכים של המשתנים גם לאחר הכרזת המשתנים.

התחביר של משתנה משתנה מוצג למטה:

var variable_name : variable_datatype = value;

הסינTAKS של משתנה מוגדר גם יכול להיות מוגדר באופן הבא:

var variable_name = value;

דוגמא למשתנה מוגדרה מוצגת מטה:

var nameOfThing: String = "Car";

הדוגמה העליונה מכילה את המילה המפתח var, שמיועדת להגדרת משתנות מוגדרות. השם של המשתנה הוא 'nameOfThing'. אחריה מגיע על עם הסוג המידעי של המשתנה בתור 'String'. הערך שבאחסון בזמנו יהיה 'Car'.

דוגמה למשתנה מוגדרה עם סינטקס שונה יכולה להיות כמו למטה:

var nameOfThing = "Car";

ניתן להגדיר את המשתנה שלך ללא סוג המידע שלה, כמו שנעשה למעלה. המבנה המילולי של הסקאלה יבדוק אותו באופן עצמי להיות סוג 'String', שזה נקרא הדעיון הסוגי של המידע.

ניתן לשינוי בקלות את ערך המשתנה באופן שאחריו:

nameOfThing = "Bike"; print(nameOfThing)

ערך המשתנה ישתנה מ- "Car" ל- "Bike." היוצא יהיה "Bike," בגלל שהמילה המפתח 'var' מאפשרת לך לשנות את ערך המשתנה (מקור: משתנות בסקאלה).

משתנות אינמיליביות

משתנות אינמיליביות הן משתנות שערךן לא יכול להשתנות אחרי שהן יוצרות והן מודגשות בעזרת המילה המפתח 'val'.

הסינטAXS של המשתנה האינמיליבית מוצג באופן הבא:

val variable_name : variable_data type = value;

הסינטAXS של המשתנה האינמיליבית יכול גם להיות מוגדר באופן הבא:

val variable_name = value;

דוגמה למשתנה אינמיליבית מוצגת מטה:

val numberOfThing: Int = 2;

הדוגמה הנ"ל מכילה את val כמילת מפתח להגדרת משתנים בלתי משתנים ושם המשתנה כ-'numberOfThing'. זה מלווה בקולון עם סוג הנתונים של המשתנה כ-'Int' יחד עם הערך המאוחסן בזיכרון שהוא 2.

הדוגמה הנ"ל של משתנה בלתי משתנה עם תחביר שונה יכולה להיעשות כמתואר להלן:

val numberOfThing = 2;

אפשר להגדיר את המשתנה שלך ללא סוג הנתונים של המשתנה כפי שנעשה לעיל, כאשר המהדר של סקאלה מבין אוטומטית שזה סוג נתונים 'Int'. התהליך נקרא הסקת סוג (מקור: משתנים בסקאלה).

אין אפשרות לשנות את הערך של המשתנה כפי שנעשה להלן:

numberOfThing = 7;

הדוגמה הנ"ל תביא לשגיאה כמו "error: not found: value 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 כפי שמוצג להלן.

תחום המשתנה

ההיקף הוא הנראות של המשתנים שיש להם אורך חיים בתוך הבלוקים המוגדרים של הקוד. המשתנה יכול להיות מוגדר בהיקף מקומי או גלובלי. לדוגמה:

var globalVar = 10 def sub(){ var difference = 9-4; } print(difference)//שגיאה print(globalVar)//תקין

בקוד הנ"ל, המשתנה 'difference' נמצא בהיקף מקומי כאשר הוא מוכרז בתוך השיטה 'sub', ופעולת החיסור תיתן תוצאות תקינות, אבל הדפסת הערך מחוץ לשיטה 'sub' תגרום לשגיאה. יש גם היקף גלובלי שבו המשתנה 'globalVar' יכול להיות נגיש בכל מקום בתוכנית, וניתן לבצע עליו כל פעולה.

ישנם שלושה סוגי היקף למשתנים בסקאלה (מקור: Scala- Variables):

  1. משתנים מקומיים
  2. שדות
  3. פרמטרים של שיטות

משתנים מקומיים

משתנים מקומיים הם משתנים משתנים או בלתי משתנים שמוכרזים בתוך שיטה וניתן לגשת אליהם רק בתוך השיטות אך לא מחוץ להן.

ניתן לראות את הדוגמה הפשוטה הבאה כדי להבין על משתנים מקומיים:

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' שבו יש שיטה שנקראת triangle שיש לה שלושה משתנים משתנים כמו side1, side2, side3. החישוב והדפסת התוצאה יתבצעו בתוך השיטה, מה שייתן את התוצאה הנכונה.

שדות

אלה המשתנים המוגדרים בתוך הכלא הניתן לכנות כמשתני שדה, שיכולים להיות מסוג כלשהו, בין אם משתנים משתנים או לא. המפתח הגישה יהיה פומבי באופן אוטומטי אם המשתנה מוגדר בתוך הכלא אבל לא צריך להיות מוגדר בתוך שום שיטה שבה המשתנה נגיש לכל מקום בתוכנית. עם זאת, משתנה פרטי יכול להיבחן בתוך הכלא המוגדר אך לא יכול להיבחן מחוץ לטווח הכלא או אפילו באובייקט גם כן.

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

הקוד שלהלן מספק את התוצאה:

ערך של value2: 30
ערך של 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

הקוד שלהלן מספק את התוצאה:

שטח המשולש הוא: 4.5

התוכנית שלהלן מכילה כיתה בשם 'משולש'. היא כוללת מתוד נקרא 'calculate' עם שני פרמטרים בשם גובה ורוחב. הערך השלם 4 ו-5 מועברים כאשר 'calculate' נקרא באמצעות המופע a.

מסכמה

ברכותינו, הגעתם לסוף ההדרכה הזו!

בהדרכה זו, עברתם על משתנים בסקלה, חוקים להגדרת משתנים, סוגים שונים של משתנים עם הצהרה והקצאה מרובה וטווח המשתנה בהם.

אם ברצונך ללמוד עוד על סקלה, השתמשו בקורס הכנתכם לסקלה של DataCamp.

Source:
https://www.datacamp.com/tutorial/variables-in-scala