概述
不确定问题是否表达得恰当,但我之前问过这个问题与此相关:如何正确地将Set实现为类属性?
我喜欢尽可能地保持代码短小、简洁易读,这是我认为某些代码可以更好地编写的地方,但我遇到了一些问题。
首先是两种读取Set值的例子:
冗长的方式:
if (Delphi1 in IDECompatibility) then
CheckListBox1.Checked[0] := True;
if (Delphi2 in IDECompatibility) then
CheckListBox1.Checked[1] := True;
if (Delphi3 in IDECompatibility) then
CheckListBox1.Checked[2] := True;
更简短更好的方法:
CheckListBox1.Checked[0] := (Delphi1 in IDECompatibility);
CheckListBox1.Checked[1] := (Delphi2 in IDECompatibility);
CheckListBox1.Checked[2] := (Delphi3 in IDECompatibility);
现在我想以另一种方式来设置值。
目前我所知道的唯一方法是冗长的:
if CheckListBox1.Checked[0] then
IDECompatibility := IDECompatibility + [Delphi1]
else
IDECompatibility := IDECompatibility - [Delphi1];
if CheckListBox1.Checked[1] then
IDECompatibility := IDECompatibility + [Delphi2]
else
IDECompatibility := IDECompatibility - [Delphi2];
if CheckListBox1.Checked[2] then
IDECompatibility := IDECompatibility + [Delphi3]
else
IDECompatibility := IDECompatibility - [Delphi3];
如果可能的话,我希望能做到像这样:
IDECompatibility[Delphi1] := CheckListBox1.Checked[0]; // Array type required
IDECompatibility[Delphi2] := CheckListBox1.Checked[1]; // Array type required
IDECompatibility[Delphi3] := CheckListBox1.Checked[2]; // Array type required
这里有Exclude
和Include
成员,但我不确定它们是否在这里需要。
因此,如上所述 - 是否有更简单的方法根据布尔值定义枚举类型?
谢谢。
Delphi1
,Delphi2
,Delphi3
,这只是为了举例说明。 - user1175743TList<TSomeEnum>
或者更好的自定义TList<T>
来实现这个吗?这样可以避免重复等问题。 - J...