我今天注意到了这段代码,并想知道这些类型的操作是否记录在某处以及为什么这样做(性能等).
var
Shift: TShiftState
begin
if [ssShift, ssCtrl] * Shift <> [] then
begin
...
end;
end;
Run Code Online (Sandbox Code Playgroud)
从我的测试看起来它只是看着像这样的代码检查Shift是否包含ssShift或ssCtrl.这是记录在案的行为,还是只是利用集合内部实际存储为整数的事实?
Ken*_*ite 13
当与集合一起使用时,这不是乘法运算符; 它是交叉点运算符.这是记录在案的,并且自德尔福之前就开始了.请参阅表达式,尤其是有关设置操作的部分.它们是联合,交集,子集和超集,平等,不平等和成员资格的标准数学运算符.
以下是文档表格的摘要:
Operator Operation Operand Types Result Type Example -------- --------- ------------- ----------- ------- + union set set Set1 + Set2 - difference set set S - T * intersection set set S * T <= subset set Boolean Q <= MySet >= superset set Boolean S1 >= S2 = equality set Boolean S2 = MySet <> inequality set Boolean MySet <> S1 in membership ordinal, set Boolean A in Set1