スウィフト – サブスクリプト

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------


スウィフト – サブスクリプト


サブスクリプトとは、配列やディクショナリの要素にアクセスする時等に使う添字式のことです。Swiftでは、構造体、列挙型、クラスにサブスクリプトによるアクセスを実装することができます。

単一の型の場合、添字の範囲は単一宣言から複数宣言までです。適切な添字を使用して、添字に渡されるインデックス値のタイプをオーバーロードすることができます。サブスクリプトは、入力データ型宣言のユーザー要件に応じて、単一次元から複数次元にまたがっています。

下付き文字の宣言構文とその使用法


下付き文字も計算されたプロパティと同じ構文に従います。型インスタンスを照会するために、添字は角括弧の中に記述され、その後にインスタンス名が続きます。下付き文字の構文は、 ‘インスタンスメソッド’と ‘計算されたプロパティ’の構文と同じ構文構造に従います。

‘subscript’キーワードはサブスクリプトを定義するために使用され、ユーザは戻り値の型とともに単一または複数のパラメータを指定できます。下付き文字は読み書き可能または読み取り専用のプロパティを持つことができ、インスタンスは計算されたプロパティのプロパティとして ‘getter’および ‘setter’プロパティの助けを借りて格納および取得されます。

構文

subscript(index: Int) −> Int {
   get {
      // 添字値の宣言に使用
   }
   set(newValue) {
      // 定義はここ
   }
}

例1

struct subexample {
   let decrementer: Int
   subscript(index: Int) -> Int {
      return decrementer / index
   }
}
let division = subexample(decrementer: 100)

print("The number is divisible by \(division[9]) times")
print("The number is divisible by \(division[2]) times")
print("The number is divisible by \(division[3]) times")
print("The number is divisible by \(division[5]) times")
print("The number is divisible by \(division[7]) times")

次の結果が得られます。

The number is divisible by 11 times
The number is divisible by 50 times
The number is divisible by 33 times
The number is divisible by 20 times
The number is divisible by 14 times

例2

class daysofaweek {
   private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
      "Thursday", "Friday", "saturday"]
   subscript(index: Int) -> String {
      get {
         return days[index]
      }
      set(newValue) {
         self.days[index] = newValue
      }
   }
}
var p = daysofaweek()

print(p[0])
print(p[1])
print(p[2])
print(p[3])

次の結果が得られます。

Sunday
Monday
Tuesday
Wednesday

下付き文字のオプション


下付き文字は、複数の入力パラメータを1つに取り、これらの入力パラメータも任意のデータ型に属します。また、変数と可変パラメータを使用することもできます。下付き文字は、デフォルトのパラメータ値を提供することも、in-outパラメータを使用することもできません。

struct Matrix {
   let rows: Int, columns: Int
   var print: [Double]
   init(rows: Int, columns: Int) {
      self.rows = rows
      self.columns = columns
      print = Array(count: rows * columns, repeatedValue: 0.0)
   }
   subscript(row: Int, column: Int) -> Double {
      get {
         return print[(row * columns) + column]
      }
      set {
         print[(row * columns) + column] = newValue
      }
   }
}
var mat = Matrix(rows: 3, columns: 3)

mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0

print("\(mat[0,0])")

次の結果が得られます。

1.0

Swift 4の添字は、適切なデータ型に対して複数のパラメータ宣言に対して単一のパラメータをサポートします。プログラムは、 ‘Double’データ型を格納するための2 * 2次元配列行列として ‘Matrix’構造体を宣言します。Matrixパラメータには、行と列を宣言するためのIntデータ型が入力されます。

Matrixの新しいインスタンスは、次のように行と列の数を初期化に渡すことで作成されます。

var mat = Matrix(rows: 3, columns: 3)

行列の値は、行と列の値を下に示すようにカンマで区切って下付き文字に渡すことで定義できます。

mat[0,0] = 1.0  
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0









前のページ 次のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。