function get ステートメント
更新 : 2007 年 11 月
クラスまたはインターフェイスで、新しいプロパティのアクセサを宣言します。function get は、function set と共に使用されることが多く、プロパティへの読み取り/書き込みアクセスを許可します。
// Syntax for the get accessor for a property in a class.
[modifiers] function get propertyname() [: type] {
[body]
}
// Syntax for the get accessor for a property in an interface.
[modifiers] function get propertyname() [: type]
引数
modifiers
省略可能です。プロパティの参照可能範囲と動作を制御する修飾子。propertyname
必ず指定します。作成するプロパティの名前。クラス内で一意の名前にする必要があります。ただし、読み取り/書き込みを行うプロパティを識別するために、同じ propertyname を get アクセサと set アクセサ両方に対して使用することはできます。type
省略可能です。get アクセサが返す型。定義する場合は、set アクセサのパラメータ型と一致させる必要があります。body
省略可能です。get アクセサの動作を定義する 1 つ以上のステートメント。
解説
オブジェクトのプロパティは、フィールドの場合とほとんど同じ方法でアクセスされます。ただし、プロパティでは、オブジェクトに格納されている値やオブジェクトから返される値を、より詳細に制御できます。クラスで定義される get および set プロパティ アクセサの組み合わせによって、プロパティは、読み取り専用、書き込み専用、または読み書き可能のいずれかになります。多くの場合、プロパティは、private フィールドまたは protected フィールドに適切な値だけを格納するために使用されます。読み取り専用のプロパティに値を代入したり、書き込み専用のプロパティから値を読み取ることはできません。
get アクセサは、戻り値の型を指定する必要があり、引数を持ちません。get アクセサは、set アクセサとペアで使用することもできます。set アクセサは引数を 1 つ受け取り、戻り値の型を持ちません。プロパティに両方のアクセサが使用されている場合は、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 age.
chris.Age = 27;
// Read chris age.
print("Chris is " + chris.Age + " years old.");
// FavoriteColor can be read from, but not written to.
print("Favorite color is " + chris.FavoriteColor + ".");
このプログラムを実行すると、次のように表示されます。
Chrisis 27 years old.
Favorite color is red.