אימות באמצעות Require
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 54 מתוך 63.
require(condition) בודקת חוזה של ארגומנט לפונקציה. אם התנאי הוא false, היא זורקת IllegalArgumentException. למבדה נגררת יכולה לספק הודעת שגיאה. תפיסת השגיאה הצפויה הזו במקום שבו מתבצעת הקריאה מאפשרת לך להמיר קלט לא תקין לתוצאה מוגדרת.
fun ticketCost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}בתוך main:
try {
println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
println("invalid")
}דרישת הארגומנט שלא מתקיימת גורמת לזריקת חריגה לפני חישוב העלות.
require זורקת IllegalArgumentException כשהתנאי שלה הוא false.
אתגר
בינוניהשלם את validatedCost עם הפרמטרים count: Int. השתמש בפונקציית העזר שסופקה לחישוב העלות, שדורשת שספירת הפריטים תהיה לא שלילית. החזר את העלות כמחרוזת במקרה של הצלחה, או invalid אם נזרקת IllegalArgumentException. הערך של count הוא בין -1000 ל־1000.
אלא אם צוין לעיל טווח מצומצם יותר, האוספים מכילים לכל היותר 100 איברים בכל רמה, והארגומנטים מסוג מספר שלם וערכי האוספים מסוג מספר שלם הם בין -1000 ל־1000. הטקסט שמסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזר ערך מסוג String. השאר את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הזוגות שלה ואחריו כל מפתח וערך. ברשימות מקוננות, הפורמט של מספר האיברים והאיברים חוזר עבור כל שורה. הפונקציה main שסופקה מדפיסה את ערך ההחזרה ואחריו תו שורה חדשה. רשימות משתמשות בפורמט הסטנדרטי של Kotlin עם סוגריים מרובעים; אל תדפיס תוויות נוספות.
נסו בעצמכם
fun cost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}
fun validatedCost(count: Int): String {
// כתבו כאן את הפתרון שלכם.
return ""
}
fun main() {
val count = readln().toInt()
println(validatedCost(count))
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשר11טיפול בשגיאות
ניתוח ללא חריגותלכידת שגיאות ספציפיותTry כביטויאימות באמצעות Requireסיכום – כמויות מאומתותתרגלו בעצמכם: Kotlin אונליין