משתנים שנלכדו
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 29 מתוך 63.
למבדה יכולה להשתמש במשתנים מהתחום המקיף אותה. זה נקרא לכידה. אם var שנלכד משתנה, קריאה מאוחרת יותר תראה את הערך הנוכחי שלו. לכידות גם מאפשרות למבדה שמוחזרת לשמר מצב בין קריאות.
בתוך main:
var offset = 2
val addOffset = { n: Int -> n + offset }
offset = 5
println(addOffset(3))בקריאה ל-lambda, היא קוראת את הערך הנוכחי של offset, שהוא חמש.
משתנה ניתן לשינוי שנלכד הוא מצב משותף, ולא עותק קפוא של הערך המקורי שלו.
אתגר
בינוניהשלימו את capturedOffset עם הפרמטרים value: Int, offset: Int. צרו למבדה שמוסיפה את ה־offset שמקיף אותה לארגומנט השלם שלה, ולאחר מכן הפעילו אותה על value.
אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים שלמים וערכים שלמים באוספים נמצאים בטווח שבין -1000 ל־1000. טקסט שסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזירו ערך מסוג Int. השאירו את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ולאחריו האיברים, ומפה מתחילה במספר הרשומות שלה ולאחריו כל מפתח וערך. רשימות מקוננות חוזרות על תבנית המספר והאיברים עבור כל שורה. ה־main שסופק מדפיס את הערך המוחזר ואחריו תו newline אחד. רשימות משתמשות בתבנית הסוגריים המרובעים הסטנדרטית של Kotlin; אל תדפיסו תוויות נוספות.
נסו בעצמכם
fun capturedOffset(value: Int, offset: Int): Int {
// כתבו כאן את הפתרון שלכם.
return 0
}
fun main() {
val value = readln().toInt()
val offset = readln().toInt()
println(capturedOffset(value, offset))
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין