Directions
是一个类型为TDirection
的元素的集合。
要查看它是否包含dirNorth
,请执行dirNorth in Directions
。使用in
运算符的结果是布尔值;当集合Directions
包含元素dirNorth
时,dirNorth in Directions
为true。
要确保dirNorth
包含在Directions
中,请执行Directions := Directions + [dirNorth]
。
要确保dirNorth
不包含在Directions
中,请执行Directions := Directions - [dirNorth]
。
要将Directions
设置为特定值,只需赋值:Directions := [dirNorth, dirSouth]
。
形式上,+
计算两个集合的并集;-
计算两个集合的差集。 *
计算两个操作数的交集。
您还拥有不错的Include
和Exclude
函数:Include(Directions, dirNorth)
与 Directions := Directions + [dirNorth]
相同;Exclude(Directions, dirNorth)
与 Directions := Directions - [dirNorth]
相同。
例如,如果
type
TAnimal = (aDog, aCat, aRat, aRabbit);
TAnimalSet = set of TAnimal;
const
MyAnimals = [aDog, aRat, aRabbit];
YourAnimals = [aDog, aCat];
然后
aDog in MyAnimals = true;
aCat in MyAnimals = false;
aRat in YourAnimals = false;
aCat in YourAnimals = true;
MyAnimals + YourAnimals = [aDog, aRat, aRabbit, aCat];
MyAnimals - YourAnimals = [aRat, aRabbit];
MyAnimals * YourAnimals = [aDog];
回答中隐含的事实是 Delphi set
类型是基于数学集合模型的。 如需了解有关 Delphi set
类型的更多信息,请参阅官方文档。
Exclude(Directions, dirNorth);
可以将其再次移除。 - Ken White