ihatov08 blog

プログラミング初心者だけどRailsとSwiftマスターします

配列:ArrayとDictonary

配列

変数Arrayに1、2、3、4の4つの数字の配列を格納する。

var array = [1, 2, 3, 4]


なぜ4つの数字を4つの変数を用意して、それぞれ格納せずに、1つの配列に格納するのか?
例えばtwitterなどそれぞれのユーザーに情報を表示するアプリを作成する。配列を用意しないとtweetされるたびに、毎回変数を用意しなければならなくなる。それはかなり大変。用意した変数の個数しかtweetできなくなってしまう。配列に入れるようにするとそのような制限がなくなる。

配列には異なる型を格納することもできる。ただし、1つの配列に同じ型を格納した方がいいことも事実。

var array = [1, 2, 3, 4, "tim"]

配列の要素にアクセスするには? 1にアクセスしたい場合。

var array = [1, 2, 3, 4]
print(array[0])

変数名[0]でアクセスする。[]の中の数字は配列のindex番号。1からではなく0から始まることに注意。

配列の要素数を調べるには?

var array = [1, 2, 3, 4]
print(array.count) =>"4\n"

配列の要素を追加するには? appendメソッドを使う。

var array = [1, 2, 3, 4]
array.append(5) =>[1, 2, 3, 4, 5]

配列の要素を削除するには? removeAtIndexメソッドを使う。

var array = [1, 2, 3, 4, 5]
array.removeAtIndex(5) => 5   #配列は→[1, 2, 3, 4]

配列をソート sortメソッドを使う
ソート (sort) は、データの集合を一定の規則に従って並べること。

var array = [5, 3, 1, 2, 4]
array.sort() =>[1, 2, 3, 4, 5]

複雑な配列をソートするには引数を指定するが、アルファベット順に並べ替えたいときは、特に指定する必要なし。


練習問題
3つの異なる数値をもった配列を用意し、2番目の要素を削除、残った2つの要素を掛け合わせる。かけあわせた要素を配列の最後に追加する。

var a = [1, 2, 3]
array.removeAtIndex(1)
array.append(a[0] * a[1])

連想配列

"キー": "値"

var dictionary = ["breakfast": "bread and tea", "coffee": "best drink ever"]
print(dictionary[breakfast]) => Optional("bread and tea")\n

[]を使い、取得したい要素のキーを指定する。 Optional変数で出力される。
オプショナル型とは、変数の型がもつ通常の値に加えて、空の(値が無い)状態を保持できる変数です。空の状態はnilで表現します。
Apple社のSwiftの解説では、"optional type"、又は、"optional value"と書かれています。ここではオプショナル型としていますが、公式な呼び方ではありません。
つまり、キーに値があるかswiftはわからないため、Optional変数になっている。 オプショナル型を計算で使用したり、通常の型を受け取る関数の引数に渡したりする場合は、値が空でないことを明示するために、アンラップする必要があります。アンラップはラップ(包装)の反対で、オプションという包装紙に包まれた変数の包装を解くイメージです。
アンラップするには!を使用する。

var dictionary = ["breakfast": "bread and tea", "coffee": "best drink ever"]
print(dictionary[breakfast]!) => "bread and tea"\n

連想配列の要素数を調べるには?

var dictionary = ["breakfast": "bread and tea", "coffee": "best drink ever"]
print(dictionary.count) => 2

連想配列に要素を追加するには?

dictionary["fruits"] = "delicious food" => "delicious food"

配列の要素を削除するには?

dictionary.removeValueForKey("breakfast") =>"bread and tea"

演習問題 食堂の3つのメニューと値段を要素として持つdictionaryを作る。 3つのメニューの価格を合計して文字列として出力する。

var menu = ["rice": 200, "soup": 300, "meet": 700]
var total = menu["rice"]! + menu["soup"]! + menu["meet"]!
print("The total cost of the tree items is \(total)") => "The total cost of the tree items is 1200"\n

ポイント
""の中に""を使うことはできない。そのため、total変数を別に用意することでこの問題を回避する。
②total変数を作成するときにアンラップさせること。そのままだとOptional変数なので、計算として使用するためにアンラップさせる。

おつかれさまでした!