我在想。是否有语言仅使用 传递引用作为其评估策略?
答案 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)
答案 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
个元素 - 如果你愿意,可以预先分配一个数组。