【Swift 2】配列(Array)を初期化する方法

公開日: : 最終更新日:2017/08/24 iOSアプリ開発

20151202-232710.jpg

こんにちは、@akio0911です。

Swiftで配列(Array)を初期化する方法についてまとめてみたいと思います!

    

配列の宣言と初期化

Swiftでは配列の宣言時に要素の型を”[要素の型名]”という形で指定します。

また、原則として要素の型はすべて揃えなければなりません(例外については後述)。

let fruits: [String] = ["Apple", "Banana", "Pineapple", "Orange"]
let counts: [Int] = [11, 22, 33, 44]

    

配列の型指定の省略

配列の型を推論できる場合は、要素の型指定を省略することができます(型推論)。

let fruits = ["Apple", "Banana", "Pineapple", "Orange"]
let counts = [11, 22, 33, 44]

    

すべての要素で同じ値を持った配列を作成

init(count: Int, repeatedValue: Element) を使うことで、すべての要素で同じ値を持った配列を作成することができます。

let counts = Array(count: 4, repeatedValue: 11)
print(counts) // [11, 11, 11, 11]

let values = [Double](count: 4, repeatedValue: 3.14)
print(values) // [3.14, 3.14, 3.14, 3.14]

    

要素によって型が異なる配列を作成

要素によって型が異なる配列を作成するには、AnyまたはAnyObjectの配列にしなければなりません。

Anyは数値・文字列・クラスのインスタンスなど全てを表す汎用的な型です。

AnyObjectはクラスのインスタンスのみを表します。

Any/AnyObjectの配列から要素を取り出して利用する場合、as!やas?で型変換(キャスト)を行う必要があります。

let array: Array<Any> = ["hello", 3.14, 123]
print(array) // ["hello", 3.14, 123]

let b : Int = 10 + (array[2] as! Int)
print(b) // 133

    

関数の配列

Swiftでは関数の配列を作成することもできます。

func f1() -> Int { return 10 }
func f2() -> Int { return 20 }
func f3() -> Int { return 30 }
func f4() -> Int { return 40 }

let funcs = [f1, f2, f3, f4]
let result = funcs[0]()
print(result) // 10

    

空の配列

以下のようにして空の配列を作ることができます。

var array: [String] = []
print(array) // []

    

@akio0911はこう思った。

SwiftはObjective-Cに比べて配列を作る時の記述が楽になっているな~と感じます。

この記事を書いた人
あきお(@akio0911
iOSエンジニア、ブロガー。「プログラミングで人々を幸せに」をテーマに活動中。著書に「iPhoneアプリ開発レシピ」「cocos2d for iPhoneレッスンノート」など。東京・大阪にてアプリ開発講座「アプリクリエイター道場」を主催。 MAMORIO株式会社 技術顧問(インタビュー記事)、VISITS Technologies株式会社 技術顧問(インタビュー記事)。ブログ「卵は世界である」を運営。

関連記事

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

【東京・銀座】粋華男(イケメン)製作所さんでメンズマツエクやメンズメイクなどを体験してきた

代表の手塚拓海さんからお誘いをいただき、粋華男(イケメン)

【入門】プログラム・プログラミング・プログラミング言語とは?

こんにちは、@akio0911です。 今回は「プログラム」「プロ

【入門】プログラミング未経験者向けのプログラミング入門連載記事を始めます

こんにちは、@akio0911です。 これからプログラミング未経

【RxSwift】BehaviorRelayとPublishRelayについてまとめてみた

こんにちは、@akio0911です。今回はRxSwiftのBe

【RxSwift】materialize, dematealizeを使ってみた

@toshi0383さんに教えていただいた、RxSwiftのm

→もっと見る

PAGE TOP ↑