【发布时间】:2015-07-24 14:37:07
【问题描述】:
与any way to compare an integer variable to a list of integers in if statement 类似,但在 Delphi 中,我如何测试整数变量是否包含在整数的静态“列表”(松散地说 - 一个预定义的集合)中(可能是 consts 或 显式值列表)在 if 语句中?
现在我会做这样的事情:
if (x = 1) or
(x = 2263) or
(x = 263553) or
(x = whatever_int) then
begin
//do something;
end;
但我试图避免或条件的冗长序列。
我正在使用 Delphi XE6,所以如果有什么新的东西可以以干净的方式实现这一点,请告诉我。
【问题讨论】:
-
您目前如何存储这个整数列表?清单有多大?您是否关心运行时效率而不是代码的清晰度?
-
由于您要求比较发生在
if语句中(甚至标记为粗体),我不敢建议使用case语句。 -
@TomBrunberg 是否可行取决于
whatever_int是否为 const。 -
不幸的是,我无法发布作为答案,但如果正如您所说,您检查的所有值在编译时都是已知的,您可以使用 case 语句:case x of /n 1, 2263, 263553, declared_const, other_declared_const, 1048000:/n // 做某事/n else // 可选做其他事情/n end;/n,,, 字符 /n 表示正常帕斯卡格式的换行
-
@TomBrunberg,如果您愿意,可以发表您的评论作为答案吗?我会赞成的。谢谢。
标签: delphi delphi-xe6