Object - クラスの新規インスタンスを作成
|
使い方
|
|
Object( obj )
Object( obj, arg1, ... )
|
|
パラメータ
|
|
obj
|
-
|
オブジェクトのインスタンス
|
arg1, ...
|
-
|
ModuleCopy ルーチンの引数
|
|
|
|
|
|
|
•
|
Object ルーチンは、与えられたオブジェクトをコピーして新規の object を作成します。
|
•
|
与えられたオブジェクトが ModuleCopy ルーチンを実装していない場合、Object はオブジェクト obj の static でないメンバーの値を新規オブジェクトにコピーします。
|
•
|
オブジェクトが ModuleCopy ルーチンを実装している場合は、Object を呼び出すと ModuleCopy ルーチンを実行します。追加パラメータ (arg1, ...) も ModuleCopy ルーチンに渡されます。
|
•
|
ModuleCopy を実行する Object を呼び出す ModuleApply ルーチンを実装し、オブジェクトにプロトタイプオブジェクトを適用します。
|
|
|
互換性
|
|
•
|
Object コマンドは Maple 16 で導入されました。
|
|
|
例
|
|
>
|
module Obj()
option object;
local data := 0;
export getData::static := proc( self::Obj )
self:-data;
end;
export setData::static := proc( self::Obj, d )
self:-data := d;
end;
end:
|
| (1) |
>
|
newObj1 := Object( Obj );
|
| (2) |
| (3) |
>
|
setData( newObj1, 10 );
|
| (4) |
>
|
newObj2 := Object( newObj1 );
|
| (5) |
| (6) |
>
|
module Obj2()
option object;
local data := 0;
export getData::static := proc( self::Obj2 )
self:-data;
end;
export ModuleCopy::static := proc( self::Obj2, proto::Obj2, d, $ )
if ( _npassed = 2 ) then
self:-data := proto:-data;
else
self:-data := d;
end;
end;
end:
|
| (7) |
>
|
newObj1 := Object( Obj2 );
|
| (8) |
| (9) |
>
|
newObj2 := Object( Obj2, 10 );
|
| (10) |
| (11) |
>
|
module Obj3()
option object;
local data := 0;
export getData::static := proc( self::Obj3 )
self:-data;
end;
export ModuleApply::static := proc( )
Object( Obj3, _passed );
end;
export ModuleCopy::static := proc( self::Obj3, proto::Obj3, d, $ )
if ( _npassed = 2 ) then
self:-data := proto:-data;
else
self:-data := d;
end;
end;
end:
|
| (12) |
| (13) |
| (14) |
| (15) |
|
|
Download Help Document
Was this information helpful?