什么(有没有)只有传递参考的语言?

时间:2010-05-26 15:08:23

标签: programming-languages parameter-passing pass-by-reference

我在想。是否有语言仅使用 传递引用作为其评估策略?

4 个答案:

答案 0 :(得分:6)

我不知道“eval策略”是什么,但Perl子程序调用只是通过引用传递。

sub change {
    $_[0] = 10;
}

$x = 5;
change($x);
print $x;  # prints "10"
change(0);  # raises "Modification of a read-only value attempted" error

答案 1 :(得分:1)

VB(pre .net),VBA& VBS 默认到ByRef虽然在调用/定义子或函数时可以覆盖它。

答案 2 :(得分:0)

Brainfuck怎么样?

答案 3 :(得分: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);

另一个例子是不知道函数参数但使用堆栈的语言。一个例子是Forth及其衍生物,其中函数可以以任何方式改变变量空间(堆栈),修改现有元素以及添加/删除元素。 Forth中的“原型评论”通常看起来像

(argument list -- return value list)

并且这意味着该函数接受/处理一定的,不一定是常数的参数和返回,同样,不一定是元素的常数。即你可以有一个函数,它接受一个N作为参数并返回N个元素 - 如果你愿意,可以预先分配一个数组。