
今回はサブスクリプト(subscript)について書きたいと思います。
サブスクリプトの説明から実際の使用例までサンプルコードをもとにわかりやすく説明していきたいと思います。
簡単に言うとインスタンスに対して配列と同じようにインデックスを付けられる仕組みがサブスクリプトです。
なにはともあれ例をみてみましょう!
まず、なんでも良いのでクラスを作ってインスタンスを生成しましょう!
今回はBandと言うクラスを作って、RedHotChiliPeppersでインスタンスを作ってみました!
class Band {
}
var RedHotChiliPeppers = Band()
次にクラスの中で配列を作ってあげます!
今回のギターはジョンでいきます!
ジョン・フルシアンテは現在何か活動してるんかな?
class Band {
var menbers = ["Anthony", "John", "Flea", "Chad"]
}
var RedHotChiliPeppers = Band()
では本題に入ります!
class Band {
var menbers = ["Anthony", "John", "Flea"]
subscript(index: Int) -> String {
get {
return menbers[index]
}
}
}
var RedHotChiliPeppers = Band()
print(RedHotChiliPeppers[1])//結果 Jhon
まずサブスクリプトを設定するとこう言う呼び出し方ができると言うのを確認したいので、11行目の結果から見てみましょう!
要するに、 インスタンス名[インデックス番号]
を指定してクラスの中の配列(今回で言うと2行目の配列)を呼び出せるようになります!
ではサブスクリプトの部分を説明していきます。
サブスクリプトの記述は3行目からですね。
まずsubscriptと書いてあげます。
次に インデックスに使う型と返り値の型 を指定します。
今回だと、インデックスはIntで返り値はStringで指定しました。
サブスクリプトの中の処理ですが、計算プロパティのようにgetとsetを使います。
計算プロパティについてはこちら[Swift入門#18]クラス(計算プロパティ編)
getとして{}の中にreturn menbers[index]と書いてあげればOKです!
では、次は配列に要素を追加してみましょう!
今回の例で言うとメンバーを1人増やします!
class Band {
var menbers = ["Anthony", "John", "Flea", "chad"]
subscript(index: Int) -> String {
get {
return menbers[index]
}
set {
menbers.insert(newValue, at: index)
}
}
}
var RedHotChiliPeppers = Band()
RedHotChiliPeppers[2] = "mayugezio"
print(RedHotChiliPeppers[2]) //結果 mayugezio
print(RedHotChiliPeppers.menbers)//結果 ["Anthony", "John", "mayugezio", "Flea", "chad"]
7行目のsetの中で増やすメンバーの情報を取得しています。
insertと言うのは要素を挿入するキーワードです!
()の中のnewValueで追加するメンバーの名前を取得して、at: indexでどこのindex番目に追加するかを取得
しています。
13行目で配列に要素を追加しています。
今回で言うとインデックス番号2に「mayugezio」を追加しています。
結果を確認してみましょう!
14行目でmayugezioが追加されたか確認しています。
15行目で「mayugezio」がレッチリのメンバーとして追加されました!
今回はサブスクリプトについて書きました!
こう言う事もできるんだ〜って感じですね!!
余談ですが、ジョンが現在何をしてるのかちょっと調べてみました!
なんと!2019年からレッチリに戻ってるやん!!しかも去年サマソニ出てるし!
全然知らんかった〜( ̄▽ ̄)
何を隠そうまゆげじおは元々がっつりギター弾いてたんよね〜
ではありがとうございました!
コメントを残す