מתודת WithIndex
חלק מהיחידה יסודות במסלול ה-Kotlin של Coddy. שיעור 75 מתוך 93.
כשעוברים על רשימה, לעיתים קרובות צריך לדעת לא רק מהו האיבר, אלא גם מהו המיקום שלו. המתודה withIndex() נותנת לך את שניהם בבת אחת.
קוראים ל־withIndex() בכל רשימה כדי לקבל זוגות של אינדקס וערך:
val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
println("$index: $color")
}
// פלט:
// 0: Red
// 1: Green
// 2: Blueשימו לב לתחביר שבתוך הסוגריים: (index, color). זה נקרא פירוק, והוא מפרק את האינדקס ואת הערך למשתנים נפרדים. תוכלו לתת למשתנים האלה כל שם שמתאים לקוד שלכם.
הגישה הזו נקייה יותר ממעקב ידני אחר אינדקס באמצעות משתנה מונה. היא שימושית במיוחד כשצריך להציג רשימות ממוספרות או לבצע פעולות שונות בהתאם למיקום:
val tasks = listOf("Wake up", "Exercise", "Eat breakfast")
for ((i, task) in tasks.withIndex()) {
println("Step ${i + 1}: $task")
}
// פלט:
// Step 1: Wake up
// Step 2: Exercise
// Step 3: Eat breakfastאתגר
בינוניתקבלו רשימה של שמות תלמידים כקלט. קראו תחילה את מספר התלמידים, ואז קראו כל שם.
באמצעות withIndex(), הדפיסו כל תלמיד עם מספר הדירוג שלו (החל מ־1, ולא מ־0).
פורמט הקלט:
- השורה הראשונה: מספר שלם
nהמייצג את מספר התלמידים nהשורות הבאות: שמות התלמידים (מחרוזות)
פורמט הפלט:
הדפיסו כל תלמיד בשורה נפרדת בפורמט:
Rank 1: Alice
Rank 2: Bob
Rank 3: Charlieזכרו ש־withIndex() מחזירה לכם אינדקסים שמתחילים ב־0, לכן תצטרכו להתאים את מספרי הדירוג כך שיתחילו ב־1.
נסו בעצמכם
fun main() {
// קראו את מספר התלמידים
val n = readLine()!!.toInt()
// קראו את שמות התלמידים לתוך רשימה
val students = mutableListOf<String>()
for (i in 1..n) {
students.add(readLine()!!)
}
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-withIndex() כדי לעבור על students ולהדפיס את הדירוג של כל תלמיד
// זכרו: withIndex() מחזירה אינדקסים שמתחילים ב-0, אבל הדירוגים צריכים להתחיל ב-1
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7קלט/פלט בסיסיים
פונקציית Printlnתבניות מחרוזתקלט באמצעות ReadLineהמרת טיפוסיםסיכום – שנים עד הפרישהסיכום – אמת או שקר10פונקציות
הכרזה על פונקציהפרמטרים וארגומנטיםערכי החזרהארגומנטים בעלי שםערכי ברירת מחדלפונקציות עם ביטוי יחידחזרה – פונקציית Sigmaחזרה – פונקציית אימות13איטרציה על רצפים
איטרציה על איבריםמתודת WithIndexאיטרציה על מחרוזות חלק 1איטרציה על מחרוזות חלק 2סיכום - אותיות עם אינדקסים3אפשרות לערך null
מהי בטיחות מפני nullטיפוסים שיכולים להיות nullאופרטור קריאה בטוחהאופרטור אלביסיסודות אתגר הפונקציותאופרטור ההבטחה לאי־nullסיכום – גישה בטוחה9לולאות
לולאת forלולאת whileלולאת do-whilebreakcontinueטווחים בלולאותלולאה מקוננתחזרה – עצרתחזרה – קלט דינמיתרגלו בעצמכם: Kotlin אונליין