我有以下代码。它看起来很丑陋,如果该值等于下面的值之一,那么做一些事情。替代检查,值是否在集合中
var
Value: Word;
begin
Value := 30000;
if (Value = 30000) or (Value = 40000) or (Value = 1) then
do_something;
end;
我想如下重构代码:
var
Value: Word;
begin
Value := 30000;
if (Value in [1, 30000, 40000]) then // Does not work
do_something;
end;
然而,重构的代码无法正常工作。我假定Delphi中的一个有效集合只接受类型为byte的元素。如果有什么好的替代方案来重构我的原始代码(除了使用案例)?
谢谢,但正如我在我的问题中指出的,我想要另一种选择。因为使用开关...这种逻辑的情况看起来不正常 – stanleyxu2005 2010-06-07 08:34:33
@ stanleyxu2005。这可能是最有效的。另外,当你开始写这样的东西时,如果条件'如果[。]中的值做了bla,否则如果在[..]中有值,你很可能最终不得不添加一个else或者else else条件。做blabla别人做blablabla'。在这种情况下,案件是明显的选择。 – 2010-06-07 17:05:14
经过一天的等待回应,我同意使用switch ... case是最可接受的解决方案。 – stanleyxu2005 2010-06-07 18:32:50