gpt4 book ai didi

arrays - 重命名 TValue 数组类型

转载 作者:行者123 更新时间:2023-12-03 15:27:00 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,涉及重命名 TValue 数组类型,例如;

TValueArray1 := TArray <TValue>;
TValueArray2 := Array of TValue;

我的意思是说他们不应该表现得相似吗?我有一个方法,它有一个常量开放的 TValue 数组作为参数,但是当我用任何 TValueArray 替换它时,编译器开始期望序数值,为什么?

例如,工作正常;

// G1 - TGUID; B1 - TBytes; I1 - Integer; S1 - String

procedure TAgBuffer.Add ( const AData: Array of TValue );
TAgBuffer.Add ( [(TValue.From <TGUID> ( G1 )), TValue.From <TBytes> ( B1 ), I1, S1] );

但是用任何 TValueArray 替换“TValue 数组”后会出现以下编译器错误:-

[dcc32 Error] Unit1.pas(44): E2001 Ordinal type required // for G1
[dcc32 Error] Unit1.pas(44): E2010 Incompatible types: 'Integer' and 'TValue' // for B1

最佳答案

您似乎在问为什么这两者不同:

procedure foo1(const a: array of Integer);
procedure foo2(const a: TArray<Integer>);

原因是foo1的参数是open array foo2 的参数是 dynamic array 。他们只是不同的野兽。了解开放数组参数与动态数组不同非常重要。

我的经验法则是,您应该尽可能使用开放数组参数。原因是它们接受尽可能多的实际参数。

关于arrays - 重命名 TValue 数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20221273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com