
הטקסט המלא של הדקות הראשונות בהרצאה «The varargs Argument» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
האם אנחנו יכולים לבנות פונקציה שמקבלת מספר מסוים של פרמטרים אבל לשלוח מספר אחר של פרמטרים? בואו נראה. יש לנו פה static void נקרא לפונקציה print ונגדיר שהפונקציה מקבלת a, b וסטרינג c ומה שנעשה פה זה בואו נדפיס את a, בואו נדפיס את b ובואו נדפיס את c.
אנחנו הולכים לקרוא ל-print ודרך אגב, אם אנחנו נמצאים בתוך הסוגריים ולוחצים על ctrl-shift-space, אז המערכת פותחת לנו את הטול טיפ הזה, שאומר לנו בדיוק מה הפונקציה מקבלת.
למה היא אומרת את זה פעמיים, זה אף אחד לא יודע, אבל זה מה שקליפס עושה. ואם אנחנו לוחצים ctrl-space, האמת ש-ctrl-space גם נותן לנו את זה, לא צריך ctrl-shift-space.
ואז היא אומרת לנו, תקשיבו, הפונקציה מקבלת a, b, ו-C, והנה המשתנים שלהם, ה-String זה C, ו-Int זה A, ו-Int זה B, A זה Int, B זה Int, ו-C זה String, אז אנחנו צריכים לשלוח עכשיו 10, 20 ו-I.
הכל בסדר, אם אנחנו מריצים, זה עובד פרפקט. בא לי לשלוח עוד אחד, כמובן שהפונקציה לא מסכימה. בא לי לשלוח אחד פחות, כמובן שהפונקציה לא מסכימה.
בא לי לשלוח במקום String, Integer, פונקציה לא מסכימה. אבל יש מקרה מאוד מיוחד שזה כן ניתן לביצוע במקרה מאוד מסוים. שימו לב.
אם אני רושם את הדבר הבא, בואו נמחק את זה וניפטר מאלה ונגדיר כאן איזשהו מערך בצורה כזאת. במקרה הזה אנחנו מחויבים לשלוח מערך.
כמובן שאנחנו רואים ש-10, 20, 30 זה לא מערך. אם היינו רושמים את זה int נמברס שווה ניו אינט בגודל, בואו נניח אפילו נגדיר את המערך בצורה כזאת, 10, 20, 30, 40, 50. בתוך הפונקציה אנחנו רוצים לרוץ, בואו נרוץ ב-foreach int item.arr ונציג את האייטם שלנו.
עכשיו אם אנחנו שולחים את הנמברס אז אנחנו אמורים לראות שהכל מסתדר כמו שצריך, נריץ והנה אנחנו הצלחנו לקרוא לפונקציה אבל לא שלחנו מספר שונה של ארגומנטים. הפונקציה קיבלה ארגומנט אחד, אנחנו שלחנו לה ארגומנט אחד.
אנחנו יכולים לעשות משהו קצת אחר, אנחנו יכולים לבוא לפונקציה, להוריד את הסוגריים, זה כמובן יהיה אינטג'ר בודד, אבל לשים פה שלוש נקודות.
ברגע ששמנו שלוש נקודות, Java יודעת שה-ARR הזה יכול להיות שני דברים, א' למערך ב', זה סדרה של מספרים שג'אווה הופכת אותם למערך.
מה זה אומר? הנה אנחנו רואים שקראנו לפונקציה ושלחנו את המספרים. בואו נריץ, ויש לנו כאן מערך של מספרים. אבל בואו נקרא לפונקציה הזאת עוד פעם, ונשלח סתם סדרה של מספרים בצורה כזאת,