Menu
Coddy logo textTech

משתנים שנלכדו

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 29 מתוך 63.

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

בתוך main:

var offset = 2
val addOffset = { n: Int -> n + offset }
offset = 5
println(addOffset(3))

בקריאה ל-lambda, היא קוראת את הערך הנוכחי של offset, שהוא חמש.

משתנה ניתן לשינוי שנלכד הוא מצב משותף, ולא עותק קפוא של הערך המקורי שלו.

challenge icon

אתגר

בינוני

השלימו את 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))
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: Kotlin אונליין