LoginSignup
8
7

More than 5 years have passed since last update.

Swift勉強メモ(2)-Array、Dictionary、Tuple-

Last updated at Posted at 2015-11-15

以下の続き。
Swift勉強メモ(1)-四則演算・変数宣言-

Swiftに触れて2日目です。
なにやらSwiftには複数のデータを扱うためには、3つほど種類あったので、それについての勉強メモ。

配列(Array)

プログラム言語としてお馴染みの配列です。
複数のデータをセットで扱うことができます(ざっくり
一つの配列には一つの型までしか格納できません。

// arrayの宣言
var array = [1,2,3]     // [1,2,3]

//  配列の中身をぐるぐるする時
for i in array{
    print(i)
}

// 要素を追加する時は、append。
array.append(4) // [1,2,3,4]

// 要素を途中に入れる時は要素とindexを指定して、insert。
array.insert(0, atIndex:0) //[0,1,2,3,4]

// 要素を消す時はindex指定してremove。
array.removeAtIndex(0)  // [1,2,3,4]

// 要素を全部消す時はremoveAll。
array.removeAll()       // []

// 配列に同じ要素をcountで指定した回数配列に値としていれることができる
var intArray3 = Array(count: 3, repeatedValue: 3)       //[3,3,3]
var strArray5 = Array(count: 5, repeatedValue: "A")     //["A","A","A","A","A"]

辞書(Dictionary)

パッと見、Rubyでいうところのハッシュ。便利。
Swiftでは辞書というらしい。
keyで検索してvalueが出てくるのだから、確かに動きは辞書ですね。

// 辞書を宣言
var strDictionary = [1:"A", 2:"B", 3:"C"]     //[2:"B", 1:"A", 3:"C"]

// keyが1のvalueを取り出す
strDictionary[1]      // "A"

// 要素をぐるぐる
for (key,value) in strDictionary {
    print("キーは\(key)値は\(value)")    // キーは1値はA\nキーは2値はB\n,キーは3値はC,
}

// 要素追加keyを指定して、valueを右辺に
strDictionary[4] = "D"
strDictionary   //[2:"B", 1:"A", 3:"C", 4:"D"]

// 要素削除はremoveValueForKeyで引数にkeyを指定する
strDictionary.removeValueForKey(4)
strDictionary   //[2:"B", 1:"A", 3:"C"]

なんか、辞書の中身の表示の順番が少しずれる?
何か規則性あるのか?
調べてみたら、公式で「辞書の順番は、保証をしていないよー」って書かれているみたい。
今度、公式のリファレンスしっかり見ておきます。

タプル(Tuple)

複数のデータをセットで扱うことが可能。
配列と似ているけど配列との違いは、異なるデータ型を扱うことができること。
あと、要素を追加したり、削除することはできない。
これは、そもそもTupleはデータの受け渡しのために使うために作られたかららしい
ほぉ!!なるほど!!こういうものを用意してくれているのですか!!
調べてみたら関数の返り値で使うようです。
確かに返り値で使うだけなら、追加や削除いらないか。

// tupleを宣言
var tuple = ("ultraBirdTech", 23, false)    //(.0 "ultraBirdTech", .1 23, .2 false)

// データの取り出し
var (name, age, bool) = tuple
name        //"ultraBirdTech"
age         //23
bool        //false

// ERROR。受け取る変数が足りないため(?)エラー
 var (name1, age2) = tuple

ここで発覚したのがSwiftでも配列やTupleからの複数変数への多重代入が可能だということ
ただ、Rubyと違って受け取る変数の数と要素の数が同じじゃないとエラーになるみたい。

おまけ

if文(分岐)とかfor文(繰り返し)は、あまり面白みなかったので割愛。
他の言語で学んでいれば、特に問題はないと思います。
分岐と繰り返しの練習も兼ねてfizzbuzzはやってみました。

// fizzbuzz
// 1から100まで繰り返して以下の判断を行う。
// 3の場合はFizz。5の場合はbuzz。両方の場合はFizzBuzzを表示する。
for i in 1...100 {
    if i % 3 == 0 && i % 5 == 0 {
        print("FizzBuzz")
    } else if i % 3 == 0 {
        print("Fizz")
    } else if i % 5 == 0 {
        print("Buzz")
    } else {
        print(i)
    }
}

まとめ

まだ、実戦で使ってはいないので、それぞれがアプリのどういう場面で使えるかは、ぼやっとしかイメージできてません。
ただ、一旦は配列やら辞書の中身を繰り返したり、取り出したりして中の値を操作できるようになれば大丈夫ですよね。
なんか、他にも色々な便利なメソッドがありそうです。
暇な時にでも公式ドキュメントで、どんなメソッドがあるか見てみます。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7