Menu
Coddy logo textTech

גישה בטוחה לערכי מפה

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

map[key] מחזיר ערך שניתן להיות null, כי ייתכן שהמפתח אינו קיים. השתמש באופרטור Elvis לערך חלופי. אפס שמור שונה מערך חסר. גישה לקריאה בלבד אינה מרמזת על אי־שינוי עמוק.

בתוך main:

val stock = mapOf("pen" to 0)
println(stock["book"] ?: -1)

המפתח book חסר, ולכן התוצאה null בוחרת בערך החלופי.

מפתח חסר מחזיר null; ברירת המחדל של Elvis משמשת רק עבור null.

challenge icon

אתגר

בינוני

השלם את lookupStock עם הפרמטרים stock: Map<String, Int>, key: String. החזר את המלאי עבור המפתח המבוקש, או -1 אם הוא לא קיים. ערכי המלאי אינם שליליים.

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

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

נסו בעצמכם

fun lookupStock(stock: Map<String, Int>, key: String): Int {
    // כתבו כאן את הפתרון שלכם.
    return 0
}
fun main() {
    val stockCount = readln().toInt()
    val stock = mutableMapOf<String, Int>()
    for (i0 in 0 until stockCount) {
        val stockKey = readln()
        val stockValue = readln().toInt()
        stock[stockKey] = stockValue
    }
    val key = readLine().orEmpty()
    println(lookupStock(stock, key))
}
quiz iconבחנו את עצמכם

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

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

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