问题标签 [open-array-parameters]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 当参数类型是 Char 的开放数组时,是否允许 Char 的动态数组?
我在看Delphi: array of Char and TCharArray "Incompatible Types"并开始试验。我的发现相当有趣。
这个简单的小示例展示了如何使用 Open Array 参数将动态数组传递给过程。它完全按预期编译和运行。
这是几乎相同的代码,唯一的区别是它使用数组Char
而不是Integer
. 它不编译。相反,编译器会吐出:
为什么会这样?
搜索了一段时间后,我发现了这个QC 报告。我正在运行 Delphi 2009,它仍在发生。
delphi - 如何将一组对象传递给一个函数进行创建?
所以我在 Delphi 2007 工作,我正在清理我的代码。我注意到在很多过程中我声明了许多相同类型的不同变量。
例如,我现在正在查看的一个过程我声明了 4 个不同的字符串列表,并且我必须var1 := TStringList.Create
为每个列表键入。
我的想法是创建一个程序,该程序接受一个开放的变量数组,我的 4 个变量列表,然后将它们全部创建。电话会是这样的
但据我所知,您不能通过引用传递开放数组,因此不能做我希望的事情。有没有人对此有任何有趣的想法?
arrays - 需要包示例中的 Oracle 存储过程接受数组(表)参数
这个问题是我的问题的一部分,如何通过 ado 参数对象将 javascript 数组传递给 oracle 存储过程
我认为将它分成 3 个小部分会更快地得到答案。
对于这个问题。
我知道我们可以声明一个表类型并使用
但我总是从创建包含一个过程的新包中得到错误。我读到一些线程说我需要清除 sql(in schema) 类型,因为 sql 和 pl/slq 没有使用相同的引擎。我尝试通过 spl*plus 在模式中创建类型,但仍然出现相同的错误,所以我首先需要一个工作包示例。
delphi - 为什么我可以将 X 类型的 var 传递给该类型的开放数组参数?
使用 Delphi XE-2(已应用所有更新)。
我希望以下代码会在 DoSomething 和 DoInteger 调用上生成编译错误,但事实并非如此。
有人能解释一下为什么我可以将 FData/FInteger(都只是单个变量)传递给它们各自类型的开放数组参数,而无需将其放在[]
's 之间,并且编译器不会将其直接返回给我吗?
我认为它可能与接口数组甚至涉及的泛型有关,但编译器也接受传递给开放整数数组的整数。
arrays - 将静态数组转换为打开不同元素类型的数组
(我已经在CodeReview上问过这个问题,它在哪里被关闭为题外话。希望它在这里是题外话。)
我有一个派生类型的静态数组(如LabelsA: array[0..3] of TLabel;
以下示例代码)和一个接受基本类型的开放数组(如procedure DoSomethingWithControls(const AControls: array of TControl);
)的例程,我想DoSomethingWithControls
用这些静态数组调用。请看我的样本:
有一些可能的调用变体DoSomethingWithControls
:
变体 1 非常简单,但需要一个“适配器”类型,例如
TArray1
每个大小的 TLabel 数组。我希望它更灵活。变体 2 更加灵活和统一,但丑陋且容易出错。
变体 3(由 TOndrej提供)类似于变体 1 - 它不需要显式强制转换,但是如果您搞砸了一些事情(例如,在复制粘贴时弄错了数组边界),变体 1 会提供更多的编译器安全性。
有什么想法可以在没有这些缺点的情况下制定这些调用(不更改数组的元素类型)?它应该适用于 D2007 和 XE6。
delphi - 无法传递类型化的 char 数组来打开 char 数组?
在 Delphi 7 或 Delphi XE 下编译时,下面的代码会报错
根据Rudy的文章,应该允许将类型化数组传递给开放数组吗?
此外,为什么它不抱怨 'array of Boolean' 和 'TABoolean' ?
非常感谢您的帮助!
c++ - 将数组传递给C++中的函数时如何避免堆栈溢出?
我正在编写一个代码,通过将指针传递给第一个位置,将数组传递给函数。在函数中,使用了数组的一部分。这会产生不安全的情况,因为如果调用者函数没有正确猜测数组的最大大小,则被调用者函数可以写入超过数组大小并且可能发生堆栈溢出。我正在考虑一个解决方案,并考虑使用函数模板并将数组作为引用传递,如本示例所示。
修改数组.h
修改数组.cpp
主文件
我正在寻找一种对现有代码的侵入性最小的解决方案。这里我只需要添加一个模板语句,将参数从 double* 更改为引用,并插入一个 if 语句来检查大小。我不想进行重大的重写。另外,出于性能原因,我也不想使用动态分配、向量或 std::array。这是数值模拟代码中的低级函数,性能非常重要。有更好的解决方案吗?做我正在做的事有陷阱吗?
delphi - 将常量传递给作为记录的开放数组的函数参数
我有这样定义的记录:
我可以像这样初始化这种记录类型的常量:
现在我有一个函数,它采用这种记录类型的开放数组:
我可以使用与常量声明类似的语法来调用此函数吗?
这不起作用。我应该使用其他东西吗?
delphi - 使用开放数组参数时如何避免“E2251 对 'MyMethodName' 的模糊重载调用”?
有时,在将开放数组传递给重载方法时,我会收到“E2251 Ambiguous 重载调用‘MyMethodName’” 。
例子:
它产生以下错误:
[DCC 错误] Unit1.pas(37): E2251 对“测试”的模糊重载调用
直到现在,由于避免错误,我一直使用临时动态数组,但我觉得它不是很干净
有没有一种更简洁的方法可以帮助 Delphi 辨别接受开放数组参数的重载?