编译器允许我执行以下操作:
procedure MyProc(const ADynData: array of string);
Run Code Online (Sandbox Code Playgroud)
要么
procedure MyProc(const ADynData: TStringDynArray);
Run Code Online (Sandbox Code Playgroud)
并传递任意数据,如下所示:
MyProc(['Data1', 'Data2']);
Run Code Online (Sandbox Code Playgroud)
但是,不允许
function MyFunc: TStringDynArray;
....
function MyFunc: TStringDynArray;
begin
Result := ['Data1', 'Data2'];
end;
Run Code Online (Sandbox Code Playgroud)
要么
function MyFunc: TStringDynArray;
const
CDynData: array[0..1] of string = ('Data1', 'Data2');
begin
Result := CDynData;
end;
Run Code Online (Sandbox Code Playgroud)
为什么是这样?这在技术上是不是一回事?
对于这些特定场景,返回任意数组字符串的建议(和最有效)方法是什么?