我有一个布尔值,如果一个数字出现在某个数组中,就需要设置它。我想通过以下操作来检查它:
procedure test();
var
arr: Array[0..255] of smallint;
i: smallint;
begin
arr[0] := 1;
i := 1;
if i in arr then
writeln('IN')
else
writeln('OUT')
end;
运行此命令将得到错误:*E2015运算符不适用于此操作数类型 *。但是我在很多堆栈溢出的答案中看到了这种方法。这个特定的实现不起作用吗?我缺少一个编译器指令吗?我使用的是 Delphi 10.3(Rio)。
1条答案
按热度按时间jxct1oxe1#
这是意料之中的。
in
运算符用于集合,而不是数组。如果你需要检查一个数组是否包含一个特定的值,你需要用标准的方法迭代数组:
但是,使用高级记录类型和operator overloading,您可以通过
in
运算符支持定义自己的基于数组的记录类型。