リンク
インターシステムズ(日) └日本語ドキュメント インターシステムズ(US) (有)エムブイビイ ダイナシステム(株) Googleグループ(英語) Googleグループ(日本語) George James Software cache'infoアーカイブ 【広告】
|
引数の渡し方Parameters.
メソッド・関数へのパラメーターの渡し方には、他の言語と同様に値渡しと参照渡しの2つの方法があります。 値渡し
基本的な値の渡し方です。
Write val } USER> Do Atai^test(100)
Atai関数に引数100を渡し、実行しました。100 Atai関数は渡された引数を変数valに格納し、プログラム中のWrite valの命令で、その内容を書きだします。 この結果、変数valに入っていた100が表示されます。 引数が複数必要な場合は、その数だけ受け取る引数をコンマ区切りで増やしていきます。以下は引数を3つ持つメソッドの例です。 Write val1,! Write val2,! Write val3,! } 渡される変数が少ない場合 - デフォルト値の設定
先ほどのAtai3ko関数は引数を3つ受け取りました。このAtai3ko関数に、2つしかパラメータを渡さなかったらどうなるのでしょうか?
USER> Do Atai3ko^test(100,200)
このように、
プログラムは動作し始め、最初の2つのパラメータ (100と200) は出力していますが、3つ目の変数val3を出力しようとしたところで、<UNDEFINED>エラーが発生してプログラムが止まってしまいます。100 200 Write val3 ^ <UNDEFINED>Atai3ko+1^test *val この問題を防ぐには、引数にデフォルト値を用意しておく方法があります。 デフォルト値は次のように引数名の後ろに、イコールとデフォルト値 を書くことで使うことができます。 Write val1,! Write val2,! Write val3,! } USER> Do Atai3ko^test(100,200)
渡されなかった3つめの引数は、デフォルトのABCが出力されます。100 200 ABC 渡される変数が多い場合 - 可変個数の引数
引数を3つ受け取るAtai3ko関数に、今度は4つパラメータを渡したらどうなるのでしょうか?
USER> Do Atai3ko^test(100,200,300,400)
<PARAMETER>エラーが発生してしまいます。 Atai3ko(val1 = 0, val2 = 0, val3 = "ABC") Public { ^ <PARAMETER>Atai3ko^test これを動作するようにするには、可変個数の引数を受け取れるようにします。可変個数の引数を受け取るには、変数名の後ろにピリオドを3つ置きます。 ZWrite Args } USER> Do Takusan^test(1,2,3,4,5)
沢山の値を渡す目的であれば、次の参照渡しを使用する方が良いでしょう。
Args=5 Args(1)=1 Args(2)=2 Args(3)=3 Args(4)=4 Args(5)=5 参照渡し
参照渡しは、値渡しと比べると次のような違いがあります。
S X=X+100 } USER>Set X=100
値渡しでは実行後も変数 X の値は最初にセットした100のままですが、USER>Do Sansyou^test(X) //値渡し USER>Write X 100 USER>Do Sansyou^test(.X) //参照渡し Xの前にピリオド USER>Write X 200 参照渡しでは実行後の変数 X の値は、メソッド Sansyou 内で +100された200と変化しています。 ZWrite X } USER>Set X=3, X(1)=10, X(2)=20, X(3)=30,
このようにメソッド中で配列の値を参照することができます。USER>Do Sansyou^test(.X) //参照渡し Xの前にピリオド X=3 X(1)=10 X(2)=20 X(3)=30 |