我有以下代码.它看起来很丑,如果值等于下面的值之一,那么就做一些事情.
var
Value: Word;
begin
Value := 30000;
if (Value = 30000) or (Value = 40000) or (Value = 1) then
do_something;
end;
Run Code Online (Sandbox Code Playgroud)
我想按如下方式重构代码:
var
Value: Word;
begin
Value := 30000;
if (Value in [1, 30000, 40000]) then // Does not work
do_something;
end;
Run Code Online (Sandbox Code Playgroud)
但是,重构的代码不起作用.我假设Delphi中的有效集仅接受类型为byte的元素.如果有任何好的替代方法来重构我的原始代码(除了使用案例)?
R-D*_*R-D 15
我觉得这样的事情?
case value of
1, 30000, 40000: do_somthing
end;
Run Code Online (Sandbox Code Playgroud)
Ond*_*lle 13
如何使用开放阵列?
function ValueIn(Value: Integer; const Values: array of Integer): Boolean;
var
I: Integer;
begin
Result := False;
for I := Low(Values) to High(Values) do
if Value = Values[I] then
begin
Result := True;
Break;
end;
end;
Run Code Online (Sandbox Code Playgroud)
示例(伪代码):
var
Value: Integer;
begin
Value := ...;
if ValueIn(Value, [30000, 40000, 1]) then
...
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5928 次 |
| 最近记录: |