next up previous contents
Next: 11.4 メソッド/秘伝内からの変数のアクセス Up: 11. メソッドと秘伝 Previous: 11.2 秘伝宣言

11.3 メソッドの呼び出し

メソッドは、

インスタンス名->メソッド名 ( 式1, 式2 ... )
インスタンス名->メソッド名 ()

と、インスタンス名に続いて、メンバ選択演算子`->'メソッド名、そし て`('に続いて引数を並べ、')'で引数列を閉じます。引数がいらない場合は `()'と1対の各個を記します。引数が2つ以上あるときは、引数を`,'で区切り ます。呼び出した関数の返す値は関数本体の式の値となります。

下記のプログラムは、2次元の点を表すクラスPointと、そのインスタンスの生 成、メソッドの呼び出し例です。


class Point {

public x, y ;
method Set (x0, y0) { x = x0 ; y = y0 }
method Move(dx, dy) { x += dx ; y += dy }
method Print() { println ("x = ", x, " y = ", y) ;}
}

var anInstance = Point->New(10, 20) ;
anInstance->Print () ; // x = 10 y = 20
anInstance->Set (5, 5) ;
anInstance->Print () ; // x = 5 y = 5
anInstance->Move (5, -5) ;
anInstance->Print () ; // x = 10 y = 0

このメソッド呼び出しを、手続き言語風に解釈すると、下記のようになります。


class Point {

public x, y ;
}

func New (aClass, x0, y0){
var myself = new aClass ;
myself->x = x0 ; myself->y = y0 ;
return myself ;
}
func Set (myself, x0, y0) { myself->x = x0 ; myself->y = y0 }
func Move(myself, dx, dy) { myself->x += dx ; myself->y += dy }
func Print(myself) { println ("x = ", myself->x, " y = ", myself->y) ;}
var anInstance = New (Point, 10, 20) ;
Print (anInstance) ; // x = 10 y = 20
Set (anInstance 5, 5) ;
Print (anInstance) ; // x = 5 y = 5
Move (anInstance, 5, -5) ;
Print (anInstance) ; // x = 10 y = 0


next up previous contents
Next: 11.4 メソッド/秘伝内からの変数のアクセス Up: 11. メソッドと秘伝 Previous: 11.2 秘伝宣言
Tetsuo Ono
1998-11-05