安全なマップ検索
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 2/63。
map[key] は、キーが存在しない可能性があるため、null 許容値を返します。フォールバックには Elvis 演算子を使用します。保存された 0 は、値が存在しない場合とは異なります。読み取り専用アクセスは、ディープイミュータビリティを意味するものではありません。
main内:
val stock = mapOf("pen" to 0)
println(stock["book"] ?: -1)bookキーは存在しないため、nullの結果によってフォールバック値が選択されます。
キーがない場合はnullが生成され、Elvisフォールバックはnullの場合にのみ使用されます。
チャレンジ
中級パラメーター stock: Map<String, Int>、key: Stringを使用してlookupStockを完成させてください。指定されたキーに対応する在庫を返し、キーが存在しない場合は-1を返してください。在庫の値は負ではありません。
上記でより厳しい範囲が指定されていない限り、各レベルのコレクションには最大100個の要素が含まれ、整数の引数および整数のコレクション値は-1000から1000の範囲です。解析用に提供されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型Intの値を返してください。提供されている入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは個数に続いて要素が並び、マップはエントリ数に続いて各キーと値が並びます。ネストされたリストでは、各行について個数と要素の形式が繰り返されます。提供されているmainは、戻り値の後に改行を1つ付けて出力します。リストには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))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド