Swift-下付き文字
クラス、構造、列挙のコレクション、シーケンス、リストの要素メンバーへのアクセスは、添え字を使用して実行されます。これらの添え字は、インデックスを使用して値を格納および取得するために使用されます。配列要素はsomeArray [index]を使用してアクセスされ、Dictionaryインスタンス内の後続のメンバー要素はsomeDicitonary [key]としてアクセスできます。
単一の型の場合、添え字は単一の宣言から複数の宣言までの範囲になります。適切な添え字を使用して、添え字に渡されるインデックス値のタイプをオーバーロードできます。添え字も、入力データ型宣言に対するユーザーの要件に応じて、単一次元から複数次元の範囲になります。
添え字宣言の構文とその使用法
計算されたプロパティの要約を見てみましょう。添え字も、計算されたプロパティと同じ構文に従います。タイプインスタンスをクエリする場合、添え字は角括弧内にインスタンス名が後に記述されます。添え字構文は、「インスタンスメソッド」および「計算されたプロパティ」構文と同じ構文構造に従います。'subscript'キーワードは添え字を定義するために使用され、ユーザーは戻り値の型で単一または複数のパラメーターを指定できます。添え字は読み取り/書き込みまたは読み取り専用のプロパティを持つことができ、インスタンスは、計算されたプロパティのプロパティとして「getter」および「setter」プロパティを使用して保存および取得されます。
構文
subscript(index: Int) −> Int {
get {
// used for subscript value declarations
}
set(newValue) {
// definitions are written here
}
}
例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
下付き文字のオプション
添え字は単一から複数の入力パラメーターを取り、これらの入力パラメーターも任意のデータ型に属します。また、変数および可変個引数パラメーターを使用することもできます。添え字は、デフォルトのパラメーター値を提供したり、入出力パラメーターを使用したりすることはできません。
複数の添え字を定義することは「添え字のオーバーロード」と呼ばれ、クラスまたは構造体は必要に応じて複数の添え字定義を提供できます。これらの複数の添え字は、添え字中括弧内で宣言されている値のタイプに基づいて推測されます。
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添え字は、適切なデータ型の単一パラメーターから複数のパラメーター宣言をサポートします。プログラムは、「Matrix」構造を2 * 2次元配列行列として宣言し、「Double」データ型を格納します。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