Requireによる検証
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 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は、条件がfalseの場合にIllegalArgumentExceptionをスローします。
チャレンジ
中級パラメーター count: Intを使用してvalidatedCostを完成させてください。負でないcountを必要とする、提供されたコストヘルパーを使用します。成功した場合はコストを文字列として返し、IllegalArgumentExceptionがスローされた場合はinvalidを返します。countは-1000から1000の範囲です。
上記でより厳しい範囲が指定されていない限り、各レベルのコレクションには最大100個の要素が含まれ、整数引数および整数コレクション値は-1000から1000の範囲です。解析用に提供されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型Stringの値を返してください。提供された入出力コードはそのままにします。スカラー引数は1行に1つずつ読み取られます。リストは個数の後に要素が続き、マップはエントリ数の後に各キーと値が続きます。ネストされたリストでは、各行について個数と要素の形式を繰り返します。提供されたmainは、戻り値の後に改行を1つ出力します。リストには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))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド