私はSwiftを勉強していて、Swift プログラミング言語Appleから。Objective-Cの経験はありません(PHP の、JavaScript などに対応していますが、Objective-C には対応していません。
24-25 ページに次のコードがあります:
//...Class definition stuff...
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
//...Class continues...
この部分はない本に明記されていますが、それが何のためにあるのかわかりません。
何ですか得るそしてセット?
ベストアンサー1
クラス内の変数の取得と設定は、その内容を取得 (「取得」) するか、変更 (「設定」) するかのいずれかを指します。
members
クラスの変数を考えてみましょうfamily
。当然、この変数は整数である必要があります。なぜなら、家族は 2 人以上の人々で構成されることは決してないからです。
したがって、次のように変数を定義することになりますmembers
。
class family {
var members: Int
}
ただし、これにより、このクラスを使用するユーザーは、家族のメンバーの数を 0 または 1 などに設定できるようになります。1 または 0 の家族というものは存在しないため、これは非常に残念なことです。
ここでゲッターとセッターが登場します。これにより、変数をどのように変更できるか、どのような値を受け取ることができるか、またどのようなコンテンツを返すかを自分で決めることができます。
ファミリー クラスに戻って、誰もmembers
値を 2 未満に設定できないことを確認しましょう。
class family {
var _members: Int = 2
var members: Int {
get {
return _members
}
set (newVal) {
if newVal >= 2 {
_members = newVal
} else {
println('error: cannot have family with less than 2 members')
}
}
}
}
members
これで、と入力して以前と同じように変数にアクセスできます。またinstanceOfFamily.members
、setter 関数のおかげで、 と入力して以前と同じように値を設定することもできます。instanceOfFamily.members = 3
ただし、変更されたのは、この変数を 2 より小さい値に設定できなくなったことです。
変数の導入に注意してください_members
。これは、setter 関数を通じて設定した値を格納するための実際の変数ですmembers
。元の変数members
は計算プロパティになり、実際の変数を処理するためのインターフェイスとしてのみ機能します。