私は考えていた。評価戦略として参照渡しのみを使用する言語はありますか?
質問する
3316 次
4 に答える
6
「評価戦略」が何であるかはわかりませんが、Perl サブルーチン呼び出しは参照渡しのみです。
sub change {
$_[0] = 10;
}
$x = 5;
change($x);
print $x; # prints "10"
change(0); # raises "Modification of a read-only value attempted" error
于 2010-05-26T15:14:58.323 に答える
1
VB (pre .net)、VBA & VBS のデフォルトは ByRef ですが、サブルーチンまたは関数の呼び出し/定義時にオーバーライドできます。
于 2010-05-26T15:18:56.070 に答える
0
FORTRAN はそうします。参照渡しなどの概念の前に、アドレス渡しを使用していると言うべきでしょう。次のような FORTRAN 関数:
INTEGER FUNCTION MULTIPLY_TWO_INTS(A, B)
INTEGER A, B
MULTIPLY_BY_TWO_INTS = A * B
RETURN
次の C スタイルのプロトタイプがあります。
extern int MULTIPLY_TWO_INTS(int *A, int *B);
次のような方法で呼び出すことができます。
int result, a = 1, b = 100;
result = MULTIPLY_TWO_INTS(&a, &b);
もう 1 つの例は、関数の引数自体を認識していないが、スタックを使用する言語です。例としては、関数が必要な方法で変数空間 (スタック) を変更し、既存の要素を変更したり、要素を追加/削除したりできる Forth とその派生物があります。Fore の「プロトタイプ コメント」は通常、次のようになります。
(argument list -- return value list)
つまり、関数は特定の、必ずしも定数ではない数の引数を受け取り/処理し、必ずしも定数ではない数の要素を返します。つまり、必要に応じて、配列を事前に割り当てて、N
引数として数値を取り、要素を返す関数を作成できます。N
于 2011-03-10T15:33:20.840 に答える
0
ブレインファックはどうですか?
于 2010-05-26T15:13:48.533 に答える