SwiftとKotlinでの書き方を同時にまとめます。
SwiftもKotlinも、dictionary(Map)はほぼ同じ感覚で書けるのでまとめて覚えられます。
✔ もくじ
ただし、SwiftのdictionaryはKotlinではMap(MutableMap)と呼ばれるものを使うのでご注意を。
Swiftのdictionaryも、KotlinのMap(MutableMap)も、分かりやすく解説します。
SwiftとKotlinのdictionary(Map)の書き方
dictionaryとは、同じ型の値を『鍵』と『値』で管理できる便利な処理です。
例えば、以下のようなイメージ。
バブル期の女性は以下のような『dictionary』で男たちを管理していた…はず。
私の為の男たち = [
“アッシー” : “佐藤くん”,
“メッシー” : “鈴木くん”,
“ミツグ” : “田中くん”
]
※分かりやすく書いた例です。Swift/Kotlinそれぞれの項目を参照して下さい。
『私の為の男たち』dictionaryからは、『アッシー(鍵)』といえば『佐藤くん(値)』というように、鍵を基に値を取り出す事ができます。
怖いですね。
以下より、SwiftとKotlinのdictionaryの書き方と使い方について解説します。
✔ SwiftとKotlinのdictionaryの書き方
Swiftのdictionaryの書き方
Swiftのdictionaryでは要素の追加や上書きを可能にする書き方と、不可能にする書き方ができます。
✔ Swiftのdictionaryの書き方
Swiftのdictionaryは、配列の書き方に似ています。
簡単なので、配列も一緒に覚えてしまってもOK。配列については以下の記事にまとめてます。
Swiftのイミュータブル(変更不可)なdictionary
Swiftのdictionaryで、要素の変更不可にしたい場合の書き方です。
『イミュータブル』とは『変更不可』の意味で、要素の追加が不可能である事を指します。
<!イミュータブル(変更不可)な辞書>
let dic = ["りんご" : 1, "みかん": 2]
<!error 追加不可>
dic["メロン"] = 3
<!error 更新不可>
dic["りんご"] = 4
Swiftの場合『let』で定義したdictionaryには要素が追加できない事が分かります。
Swiftのミュータブル(可変)なdictionary
Swiftのdictionaryで、こちらは要素の変更を可能にしたい場合の書き方。
『ミュータブル』とは『可変』の意味で、要素の追加が可能である事を指します。
<!ミュータブル(可変)な配列>
var dic : [String : Int]
<!初期化>
dic = ["りんご" : 1, "みかん" : 2]
<!OK 追加可能>
dic["メロン"] = 3
<!OK 更新可能>
dic["りんご"] = 4
Swiftの場合『var』でdictionaryを定義した場合、要素の追加が可能になります。
Kotlinのdictionary(Map)の書き方
Swiftのdictionaryと同様に、要素の追加や上書きを可能にする書き方と、不可能にする書き方ができます。
Kotlinの場合『Map』と呼ばれるものを使い、これがSwiftのdictionaryと同じ位置付けのもの。
Swiftにも『map』関数がありますが、Swiftのmapとは別物なのでご注意を。
✔ Kotlinのdictionaryの書き方
Swiftのdictionaryと機能は同じですが、書き方が異なります。
KotlinのMap(変更不可)の書き方
Swiftのdictionaryに相当するKotlinのMapの書き方です。
こちらは要素の変更不可にしたい場合の書き方。
『イミュータブル』とは『変更不可』の意味で、要素の追加が不可能である事を指します。
<!イミュータブル(変更不可)なMap>
val map = mapOf("りんご" to 1, "みかん" to 2)
<!error 追加不可>
map["メロン"] = 3
map += "メロン" to 3
<!error 更新不可>
map["りんご"] = 4
map += "りんご" to 4
Kotlinの『Map』は要素の追加や更新ができない事が分かります。
KotlinのMutableMap(可変)の書き方
Swiftのdictionaryでは『var』で定義すれば変更可能なdictionaryが書けましたが、Kotlinでは『MutableMap』を使います。
もう名前にミュータブルが付いちゃってるので分かりやすいですね。
『ミュータブル』とは『可変』の意味で、要素の追加が可能である事を指します。
<!ミュータブル(可変)なMap>
mutableMap = mutableMapOf("りんご" to 1, "みかん" to 2)
<!OK 追加可能>
mutableMap["メロン"] = 3
mutableMap += "メロン" to 3
<!OK 更新可能>
mutableMap["りんご"] = 4
mutableMap += "りんご" to 4
なお、SwiftのdicitonaryもKotlinのMutableMapも要素の追加や更新は、同じ型であれば定数でも変数でも可能です。
Kotlinの定数と変数の定義方法は以下の記事にまとめていますので、気になる方はどうぞ。
以上です。
いつもご静聴ありがとうございます!
エンジニアの皆さん、お疲れ様です。