ネストされたマップ
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 9/63。
マップの値自体をマップにすることもできます。各ルックアップでは値が見つからない場合があるため、安全な呼び出しと最後のフォールバックを組み合わせます。可変更新には、変更するレベルでの可変性がrequireされます。
main内:
val school = mapOf("Ada" to mapOf("math" to 9))
println(school["Ada"]?.get("art") ?: -1)Adaは存在しますが、内部のartキーは存在しないため、フォールバックが使用されます。
存在しない可能性のある各マップレベルで安全なアクセスを使用します。
チャレンジ
中級パラメータ name: String、subject: String を持つ nestedScore を完成させてください。固定されたレコード Ada: math 9、art 7、および Bo: math 6 を使用してください。要求されたスコアを返し、名前または科目が存在しない場合は -1 を返してください。
上記でより厳しい境界が指定されていない限り、コレクションは各レベルで最大 100 個の要素を含み、整数の引数および整数コレクションの値は -1000 から 1000 の範囲です。解析対象として与えられるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型 Int の値を返してください。提供されている入力/出力コードはそのまま使用してください。これはスカラー引数を 1 行に 1 つずつ読み取ります。リストは個数に続いて要素が並び、マップはエントリ数に続いて各キーと値が並びます。ネストされたリストでは、各行について個数と要素の形式を繰り返します。提供されている main は、戻り値を 1 つの改行に続けて出力します。リストには Kotlin の標準的な角かっこ形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun nestedScore(name: String, subject: String): Int {
// ここに解答を書いてください。
return 0
}
fun main() {
val name = readLine().orEmpty()
val subject = readLine().orEmpty()
println(nestedScore(name, subject))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド