2017年1月16日月曜日

dictionaryを使ってみる

dictionaryは"key"に対する"value"を格納するものです。
追加する場合は、"定義されていない要素" = "value"とするようです。
(appendとかは使わない??)

// 定義
var dicTest02:Dictionary<String,Int> = [:]
// 追加
dicTest02["ほげ"] = 10
dicTest02["hoge"] = 20
// 取得
print(dicTest02["ほげ"])      // Optional(10)

以下、いろいろ試したジャンクソース
//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

print("使い方1 初期化と宣言しておいて取り出す")
let dicTest01 = [1:"テスト1", 2:"テスト2", 3:"テスト3"]
print(dicTest01)        // [2: "テスト2", 3: "テスト3", 1: "テスト1"]
print(dicTest01[1])     // "テスト1"と表示される < keyがintになっている?
print(dicTest01.count)

for val in dicTest01{   // valueが取り出されて表示される(順番は不定みたい)
    print(val)          // (2, "テスト2") ...
}

print("使い方2 型指定して宣言、文字列をkeyとしてメンバを格納")
var dicTest02:Dictionary<String,Int> = [:]
dicTest02["ほげ"] = 10
dicTest02["hoge"] = 20
print(dicTest02["ほげ"])      // Optional(10)
/* ダメな使い方
 dicTest02 = ["ほげ":3]       //  keyに対してvalueを設定してあげる事
 dicTest02 = ["hoge": 4]     // "ほげ"は上書きされる??
 print(dicTest02)    // 全部表示
 print(dicTest02["ほげ"])
 */
for val2 in dicTest02{
    print(val2)             // ("ほげ", 10)という表示
    print(val2.0)           // keyが表示される
    print(val2.1)           // valueが表示される (value = 1なのか?)
}


print("使い方3 2と同じだけど、<>で型宣言しても良いようだ")
// 空の辞書を作って追加していく
var dicTest03:[String:Int] = [:]
dicTest03["ほげ"] = 3
dicTest03["hoge"] = 4
print(dicTest03)        // 両方表示される
print(dicTest03["hoge"])    // "hoge"のvalueである"4"が表示される
print(dicTest03["ほげ"])      // valueの3が表示される
for val3 in dicTest03{
    print(val3)
    print(val3.0)
    print(val3.1)
}

print("要素をタプルで作って辞書に格納していく append使ってダメな例")
var dicTest04:[String:Int] = [:]    // 空の辞書を作る
let a = ["ほげ",1]
let b = ["hoge", 2]
// dicTest04.append(a) // こういう使い方はできないみたい

print("appendで追加していく例 ...keyに追加されないので意図した動作ではない")
var dicList05 : [(id:String, name:String)] = []
let men1 = (id:"1", name:"hoge")
let men2 = (id:"2", name:"ほげ")
dicList05.append(men1)
dicList05.append(men2)
print(dicList05.count)  // 2
print(dicList05)        // [("1", "hoge"), ("2", "ほげ")]

print(dicList05[0])     // ("1", "hoge")
print(dicList05[1])     // ("2", "ほげ")
/*
// print(dicList["1"])
for (id,name) in dicList05 = {  // タプルで取得はできないみたい
    print(name)
}
*/

0 件のコメント:

コメントを投稿