function set ステートメント
更新 : 2007 年 11 月
クラスまたはインターフェイスで、新しいプロパティのアクセサを宣言します。function set は function get と共に使用されることが多く、プロパティへの読み取り/書き込みアクセスを許可します。
// Syntax for the set accessor of a property in a class.
[modifiers] function set propertyname(parameter [: type]) {
[body]
}
// Syntax for the set accessor of a property in an interface.
[modifiers] function set propertyname(parameter [: type])
引数
modifiers
省略可能です。プロパティの参照可能範囲と動作を制御する修飾子。propertyname
必ず指定します。作成するプロパティの名前。クラス内で一意の名前にする必要があります。ただし、読み取り/書き込みを行うプロパティを識別するために、同じ propertyname を get アクセサと set アクセサ両方に対して使用することはできます。parameter
必ず指定します。set アクセサが受け取る仮パラメータ。type
省略可能です。set アクセサのパラメータの型。定義する場合は、get アクセサの戻り値の型と一致させる必要があります。body
省略可能です。set アクセサの動作を定義する 1 つ以上のステートメント。
解説
オブジェクトのプロパティは、フィールドの場合とほとんど同じ方法でアクセスされます。ただし、プロパティでは、オブジェクトに格納されている値やオブジェクトから返される値を、より詳細に制御できます。クラスで定義される get および set プロパティ アクセサの組み合わせによって、プロパティは、読み取り専用、書き込み専用、または読み書き可能のいずれかになります。多くの場合、プロパティは、private フィールドまたは protected フィールドに適切な値だけを格納するために使用されます。読み取り専用のプロパティに値を代入したり、書き込み専用のプロパティから値を読み取ることはできません。
set アクセサの引数は 1 つだけで、戻り値の型は指定できません。set アクセサは、get アクセサとペアで使用することもできます。get アクセサは引数を持たず、戻り値の型を指定する必要があります。プロパティに両方のアクセサが使用されている場合は、get アクセサの戻り値の型と、set アクセサの引数の型が一致している必要があります。
プロパティは、get アクセサと set アクセサのいずれか、または両方を持ちます。プロパティの get アクセサ (get アクセサがない場合は set アクセサ) だけが、プロパティ全体に適用されるカスタム属性を持ちます。get および set アクセサはどちらも、各アクセサに適用される修飾子とカスタム属性を持つことができます。プロパティ アクセサはオーバーロードされませんが、隠ぺいまたはオーバーライドされます。
プロパティは interface の定義に指定できますが、インターフェイスに実装は与えられません。
使用例
いくつかのプロパティ宣言の例を次に示します。Age プロパティは、読み書き可能として定義されています。読み取り専用の FavoriteColor プロパティも定義されています。
class CPerson {
// These variables are not accessible from outside the class.
private var privateAge : int;
private var privateFavoriteColor : String;
// Set the initial favorite color with the constructor.
function CPerson(inputFavoriteColor : String) {
privateAge = 0;
privateFavoriteColor = inputFavoriteColor;
}
// Define an accessor to get the age.
function get Age() : int {
return privateAge;
}
// Define an accessor to set the age, since ages change.
function set Age(inputAge : int) {
privateAge = inputAge;
}
// Define an accessor to get the favorite color.
function get FavoriteColor() : String {
return privateFavoriteColor;
}
// No accessor to set the favorite color, making it read only.
// This assumes that favorite colors never change.
}
var chris : CPerson = new CPerson("red");
// Set Chris's age.
chris.Age = 27;
// Read Chris's age.
print("Chris is " + chris.Age + " years old.");
// FavoriteColor can be read from, but not written to.
print("Favorite color is " + chris.FavoriteColor + ".");
このプログラムを実行すると、次のように表示されます。
Chris is 27 years old.
Favorite color is red.