Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
Swift
入門編
- トップページ
- Swift入門編 - 配列の使い方
配列の使い方
みなさまどうも。いかがお過ごしでしょうか。
さて、これまで色々と配列の定義方法とかについて紹介してきたので今回は配列の使い方とか利便性について色々とみていきましょう。
まず、配列は自分自身の要素数を数える事ができる、という事を使ってちょっとした処理を構築してみます。ちょっと以下のサンプルを見てみて下さい。
let vocaloid0 = "初音ミク", vocaloid1 = "IA", vocaloid2 = "鏡音リン"
(´-`).。oO(著者が大好きボカロの皆さんのお名前を借りています...)
上記のサンプルはボカロの皆様の名前を定数として保存している感じになりますね。
さて、ちょいと今現在保存しているボカロの皆様の人数を出力したい、となった場合を考えてみましょう。Swiftに限らず他の言語でも定義してある変数や定数の数を数える処理というのは用意されていないことが多いです。となるとこんな記述になりますね。
let vocaloid0 = "初音ミク", vocaloid1 = "IA", vocaloid2 = "鏡音リン" print("現在保存しているボカロの皆様の人数は3人です。")
上記のサンプルはあんまりプログラミングっぽくないですよね。
ボカロさんの人数をプログラマーが数えちゃってます。コンピューターに処理させるための演算式を書くのがプログラマーの仕事なので、そういう面でもなんだか残念な感じです。
そこでちょっと修正してあげます。まずボカロの皆様のお名前を配列で保存するようにしてみましょう。こんな感じになります。
let vocaloids = [ "初音ミク", "IA", "鏡音リン" ] print("現在保存しているボカロの皆様の人数は3人です。")
そして配列は『.count』を使用することで配列数を数えることができます。記述方法は『配列名.count』って感じですね。
let vocaloids = [ "初音ミク", "IA", "鏡音リン" ] print(vocaloids.count) // 数値『3』が出力されます。
これを利用することで現在保存しているボカロさんの人数を自動出力できそうな感じがしてきました。
と、ここで注意点です。今現在の情報を組み合わせると以下のような感じになるかと思います。『+』で文字列を結合させて出力させている感じですね。
let vocaloids = [ "初音ミク", "IA", "鏡音リン" ] print("現在保存しているボカロの皆様の人数は" + vocaloids.count + "人です。")
これ、エラーになっちゃいます。
このエラーの理由は、『.count』で取得した数値はInt型なのでString型の『"現在保存しているボカロの皆様の人数は"』という部分と型が違っちゃってるせいだったりします。というわけでこの状態では『+』での文字列連結はできません。
というわけで『.count』で取得した数値をString型に変換しちゃいましょう。Swiftで数値を文字列に変換する場合は、『.description』というのを使用します。記述方法は『数値.description』って感じになります。
let n0 = 1, n1 = 3.14, n2 = -1 print(n0.description) // String型の『1』が出力されます。 print(n1.description) // String型の『3.14』が出力されます。 print(n2.description) // String型の『-1』が出力されます。
この知識を組み合わせて先程の処理を再度構築してみます。こんな感じになりますね。
let vocaloids = [ "初音ミク", "IA", "鏡音リン" ] let s = vocaloids.count.description // 数値をString型に変換して定数として保存します。 print("現在保存しているボカロの皆様の人数は" + s + "人です。") // 『現在保存しているボカロの皆様の人数は3人です。』と出力されます。
これで大分プログラミングっぽくなってきましたね。ためしに『巡音ルカ』ちゃんを追加してみましょう。結果部分に注目して下さい。
let vocaloids = [ "初音ミク", "IA", "鏡音リン", "巡音ルカ" ] let s = vocaloids.count.description // 数値をString型に変換して定数として保存します。 print("現在保存しているボカロの皆様の人数は" + s + "人です。") // 『現在保存しているボカロの皆様の人数は4人です。』と出力されます。
配列に要素を追加しただけですが、ちゃんと出力される人数が変わっていますね。
ではこの勢いで「最後に追加したボカロさんのお名前を自動で出力してくれる処理」を追加してみましょう。まず文字列を固定させた状態で記述してみます。
let vocaloids = [ "初音ミク", "IA", "鏡音リン", "巡音ルカ" ] let s = vocaloids.count.description // 数値をString型に変換して定数として保存します。 print("現在保存しているボカロの皆様の人数は" + s + "人です。") // 『現在保存しているボカロの皆様の人数は4人です。』と出力されます。 print("最後に追加したボカロさんのお名前は巡音ルカです。")
上記のサンプルの『巡音ルカ』という部分を動的にすればOKっぽいですね。というわけで、まず最初に配列『vocaloids』の値を使用するように改造してみます。今現在の配列『vocaloids』の最後のインデックス番号は『3』なのでこんな感じになります。
let vocaloids = [ "初音ミク", "IA", "鏡音リン", "巡音ルカ" ] let s = vocaloids.count.description // 数値をString型に変換して定数として保存します。 print("現在保存しているボカロの皆様の人数は" + s + "人です。") // 『現在保存しているボカロの皆様の人数は4人です。』と出力されます。 print("最後に追加したボカロさんのお名前は" + vocaloids[3] + "です。")
続いて『vocaloids[3]』の『[]』の中身を動的にしてしまいましょう。これには先程紹介した配列数を取得できる『.count』を使用します。
ここでちょっと注意点ですが、今現在の配列『vocaloids』の要素数は『4』になります。しかし、ちょいと思い出して頂きたいのですが配列は『0』から数え始めますよね。ということは『.count』で取得した数値から『1』を引く必要がありますのでここ間違えないようにしてください。
というわけで完成形です。
let vocaloids = [ "初音ミク", "IA", "鏡音リン", "巡音ルカ" ] let s = vocaloids.count.description // 数値をString型に変換して定数として保存します。 print("現在保存しているボカロの皆様の人数は" + s + "人です。") // 『現在保存しているボカロの皆様の人数は4人です。』と出力されます。 print("最後に追加したボカロさんのお名前は" + vocaloids[vocaloids.count - 1] + "です。") // 『最後に追加したボカロさんのお名前は巡音ルカです。』と出力されます。
これで自動で最後に追加したボカロさんの名前も出力できるプログラムとなりました。
試しに『結月ゆかり』ちゃんを追加してみます。するとこんな結果になりますね。
let vocaloids = [ "初音ミク", "IA", "鏡音リン", "巡音ルカ", "結月ゆかり" ] let s = vocaloids.count.description // 数値をString型に変換して定数として保存します。 print("現在保存しているボカロの皆様の人数は" + s + "人です。") // 『現在保存しているボカロの皆様の人数は5人です。』と出力されます。 print("最後に追加したボカロさんのお名前は" + vocaloids[vocaloids.count - 1] + "です。") // 『最後に追加したボカロさんのお名前は結月ゆかりです。』と出力されます。
バッチリですね。これがプログラミングなのかー、と感じて頂ければ嬉しいです。配列にアクセスするときの『[]』の中に演算式が書ける、ということも合わせて覚えて頂ければ幸いです。
というわけでちょっとした配列の使い方の紹介となりましたがいかがだったでしょうか。配列という概念の強力さをちょっとでも感じて頂ければと思います。
続いての記事では『辞書』ってやつについてやっていきましょう。ではではこの辺で。失礼いたします。
この記事は桜舞が執筆致しました。
著者が愛する小型哺乳類 |
桜舞 春人 Sakurama HarutoISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。 |
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。