5

私は考えていた。評価戦略として参照渡しのみを使用する言語はありますか?

4

4 に答える 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 に答える