PracticU

The varargs Argument

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים › The varargs Argument
The varargs Argument

בשיעור זה לומדים את מנגנון הפרמטרים המשתנים ב-Java, רואים למה פונקציה רגילה מחייבת מספר פרמטרים מדויק, כיצד שלוש נקודות מאפשרות לשלוח מערך או סדרת ערכים, ומהם הכללים למיקום הפרמטר המשתנה.
נושאי הסיכום המוצגים בשיעור:
1. השאלה שפותחת את השיעור: האם אפשר לבנות פונקציה שמקבלת מספר מסוים של פרמטרים אבל לשלוח לה מספר אחר של פרמטרים, ובהדגמה ראשונה בונים פונקציה שמקבלת שני מספרים ומחרוזת ומציגה אותם, ועוד טיפ כלי קטן שמציג בעת הקריאה את הפרמטרים שהפונקציה מקבלת ומסייע לכתוב את הקריאה נכון.
2. הקריאה התקינה והמגבלות: כשקוראים לפונקציה ושולחים בדיוק את הערכים הנדרשים הכל עובד פרפקט, אבל אם רוצים לשלוח פרמטר נוסף, או פרמטר פחות, או לשלוח מספר במקום מחרוזת, הפונקציה לא מסכימה, כי מספר וסוג הפרמטרים מחויבים.
3. פתרון ביניים בעזרת מערך: אפשר להגדיר שהפונקציה מקבלת מערך, ואז כדי לקרוא לה מחויבים לשלוח מערך שנבנה מראש עם הערכים, ובתוך הפונקציה רצים על כל איברי המערך ומציגים אותם, ובהרצה הכל מסתדר, אבל בעצם לא שלחנו מספר שונה של ארגומנטים אלא ארגומנט אחד שהוא המערך.
4. שלוש הנקודות שמשנות הכל: במקום סוגריים מרובעים שמגדירים מערך שולחים את הפרמטר עם שלוש נקודות אחריו, ומרגע זה Java יודעת שהפרמטר הזה יכול להיות שני דברים, מערך מלא, או סדרה של מספרים ש-Java הופכת למערך בעצמה ושולחת אותו לפונקציה, ובהדגמה גם שליחת מערך בנוי וגם שליחת סדרה של מספרים אחד אחד עובדים היטב.
5. הכלל של אותו סוג: כל הערכים בסדרה חייבים להיות מאותו הסוג, ואם שולחים בין המספרים ערך אחר זו שגיאה, כי הוא לא יכול להיכנס לתוך מערך של מספרים שלמים, ומי שהופך את כל הסדרה למערך זו Java עצמה.
6. שם הקונספט: הקונספט הזה נקרא varargs argument, קיצור של variable arguments.
7. הפרמטר המשתנה חייב להיות אחרון: אם מנסים להוסיף פרמטר אחרי הפרמטר המשתנה, בין אם הוא מספר ובין אם הוא מחרוזת, מקבלים שגיאה, וזה הגיוני, כי Java לא תדע האם הערך הבא נועד לפרמטר הנוסף או שהוא עדיין חלק מהסדרה של המערך.
8. הפוך את הסדר וזה חוקי: אם שמים את הפרמטר הרגיל לפני הפרמטר המשתנה זה חוקי, ואז בקריאה מחויבים לשלוח את הערך הראשון ואת שאר הערכים, ובהרצה רואים שהמספר הראשון נכנס לפרמטר הרגיל ושאר המספרים נכנסים לסדרה, והמרצה מעיר שלא ברור כמה זה שימושי לשלוח עוד משתנים ביחד אבל זה אפשרי.
9. השימוש בפועל: ברוב המקרים מספיק להגיד לפונקציה שרוצים לקבל סדרה של מספרים או מערך בודד, ומי שקורא לפונקציה יכול לשלוח מערך או להחליט לשלוח את המספרים בצורה בודדת אחד אחד אם זה נוח לו יותר, והמרצה מוסיף שזה לא מאוד נפוץ ב-Java אבל רואים את זה לפעמים בפונקציות מערכת וגם אנחנו יכולים להשתמש בזה.
סיכום:
בשיעור זה הכרנו את ה-varargs ב-Java, ראינו שפונקציה רגילה מחייבת מספר וסוג פרמטרים מדויקים, שמערך פותר חלקית אבל מחייב שליחת מערך, וששלוש נקודות מאפשרות לקורא לבחור בין שליחת מערך לבין שליחת סדרת ערכים ש-Java הופכת למערך, למדנו שכל הערכים חייבים מאותו סוג ושהפרמטר המשתנה חייב להיות האחרון ברשימה, ובשיעור הבא נעסוק בתיעוד של פונקציה.
בשיעור הבא נעסוק בנושא Documenting a Function.
מילון מושגים:
פרמטר – ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
משתנה – שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
Java – שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.
פונקציה – קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
מערך – מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
מחרוזת – סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
SR11151HE

פרקי ההרצאה: The varargs Argument

  1. 00:00

    פונקציה עם ארגומנטים קבועים

  2. 01:23

    שליחה עם ארגומנטים לא תואמים

  3. 02:03

    שליחת מערך כארגומנט לפונקציה

  4. 03:05

    varargs: שלוש נקודות במקום מערך

  5. 03:40

    קריאה עם סדרת מספרים במקום מערך

תמלול ההרצאה: The varargs Argument

הטקסט המלא של הדקות הראשונות בהרצאה «The varargs Argument» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    האם אנחנו יכולים לבנות פונקציה שמקבלת מספר מסוים של פרמטרים אבל לשלוח מספר אחר של פרמטרים? בואו נראה. יש לנו פה static void נקרא לפונקציה print ונגדיר שהפונקציה מקבלת a, b וסטרינג c ומה שנעשה פה זה בואו נדפיס את a, בואו נדפיס את b ובואו נדפיס את c.

  2. 00:35

    אנחנו הולכים לקרוא ל-print ודרך אגב, אם אנחנו נמצאים בתוך הסוגריים ולוחצים על ctrl-shift-space, אז המערכת פותחת לנו את הטול טיפ הזה, שאומר לנו בדיוק מה הפונקציה מקבלת.

  3. 00:52

    למה היא אומרת את זה פעמיים, זה אף אחד לא יודע, אבל זה מה שקליפס עושה. ואם אנחנו לוחצים ctrl-space, האמת ש-ctrl-space גם נותן לנו את זה, לא צריך ctrl-shift-space.

  4. 01:06

    ואז היא אומרת לנו, תקשיבו, הפונקציה מקבלת a, b, ו-C, והנה המשתנים שלהם, ה-String זה C, ו-Int זה A, ו-Int זה B, A זה Int, B זה Int, ו-C זה String, אז אנחנו צריכים לשלוח עכשיו 10, 20 ו-I.

  5. 01:23

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

  6. 01:35

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

  7. 01:47

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

  8. 02:08

    כמובן שאנחנו רואים ש-10, 20, 30 זה לא מערך. אם היינו רושמים את זה int נמברס שווה ניו אינט בגודל, בואו נניח אפילו נגדיר את המערך בצורה כזאת, 10, 20, 30, 40, 50. בתוך הפונקציה אנחנו רוצים לרוץ, בואו נרוץ ב-foreach int item.arr ונציג את האייטם שלנו.

  9. 02:46

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

  10. 03:10

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

  11. 03:22

    ברגע ששמנו שלוש נקודות, Java יודעת שה-ARR הזה יכול להיות שני דברים, א' למערך ב', זה סדרה של מספרים שג'אווה הופכת אותם למערך.

  12. 03:39

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

לקורס המלא: קורס ג'אווה למתחילים אונליין

ההרצאה הקודמת: Function Overloading

ההרצאה הבאה: Documenting a Function

הרצאות קשורות מקורסים אחרים

  • onClick Event Argument

קורסים נוספים במסלול

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium
  • קורס סלניום מתקדם - CI/CD - Continues Integration
  • קורס מייבן - Maven