我在想。是否存在仅使用传递引用作为评估策略的语言?
问问题
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(.net 之前)、VBA 和 VBS默认为 ByRef,尽管在调用/定义子或函数时可以覆盖它。
于 2010-05-26T15:18:56.070 回答
0
脑残呢?
于 2010-05-26T15:13:48.533 回答
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
元素的函数——如果您愿意,可以预先分配一个数组。
于 2011-03-10T15:33:20.840 回答