我有一个函数,其参数为var Extended
。如果我在调用函数时使用Double
类型的参数,编译器会报错。但是,如果我将Extended
值作为函数Result
返回(并赋给一个Double
变量),那么编译器就会通过。
这是预期的吗?如果是,是否有任何方法可以欺骗编译器,以使参数的精度与参数匹配?
function foo1(var e: extended): boolean;
begin
e := 0.0;
Result := true;
end;
function foo2(): extended;
begin
Result := 0.0;
end;
procedure CallFoo();
var
d: double;
begin
if foo1(d) then Exit; // compiler complains
d := foo2; // compiler happy
end;
var
时,您传递了一个同意类型的变量引用,因此该函数直接在那里写入而没有赋值语句固有的任何类型转换魔法。从同一页中可以看到:相反,变量参数的作用类似于指针,而不是副本。 - Free Consulting