例えば、下記のような書きかけプログラムがあるとします。
func max(a,b) (a>b)?a:b ;
func min(a,b) (a<b)?a:b ;
class ValueInfo {
public max ;
public min ;
method SetMinMax ;
}
method ValueInfo::SetMinMax (a,b) {
// a, b の小さいほうを、
// メンバ min に、大きいほうを、
// メンバ max にセットしたい
}
このメソッドSetMinMaxの中身を書く場合、すでに定義されている関数、min、 maxを利用して、
method ValueInfo::SetMinMax (a, b) {
->max = max(a,b) ;
->min = min(a,b) ;
}
としたいところですが、メソッド内では、メンバの参照の方が優先 されるので、
max(a,b), min(a,b)
は、それぞれ、ValueInfo の public メンバ min, max を参照してし まいます。そのため、メソッド内からせっかく外部に定義してある、 関数 min, max を利用できません。メソッド内から、メンバと同名の 外部変数・関数を参照したい場合は、その名前の先頭に、`$' をつけ ることによって行えます。
method ValueInfo::SetMinMax (a, b) {
->max = $max(a,b) ;
->min = $min(a,b) ;
}
$<識別子>の接頭文字`$'は、強制クラス外参照接頭文字といい、 クラス内のメンバ変数、メソッド/秘伝の参照を強制的に無視する働きをしま す。