> スウィフト – サブスクリプト – ネットワークエンジニアチュートリアル

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

スポンサーリンク

無料でプログラマへ!30歳までなら無料でプログラミング学校に通うことが出来ます。下の画像をクリックして無料相談会でGO!


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


サブスクリプトとは、配列やディクショナリの要素にアクセスする時等に使う添字式のことです。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









前のページ 次のページ

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:2017-11-14 更新日:

執筆者: