集合运算符
您可以在Pascal集上执行以下集合操作符。
操作符 |
说明 |
Union |
这将连接两个集合,并给出一个包含两个集合中的成员的新集合。 |
Difference |
获取两个集合的差,并给出一个新集合,其中包含两个集合都不通用的元素。 |
Intersection |
获取两个集合的交集,并给出两个集合共有的元素的新集合。 |
Inclusion |
如果集合P中的所有项目也都在Q中,则集合P包含在集合Q中,反之亦然。 |
Symmetric difference |
获取两个集合的对称差,并给出一组元素,这些元素在这两个集合中的任何一个中而不在它们的交集中。 |
In |
它检查成员是否在集合内。 |
下表显示了Free Pascal支持的所有集合运算符。假设S1和S2是两个字符集,例如-
S1:= ['a','b','c'];
S2:= ['c','d','e'];
操作符 |
描述 |
示例 |
+ |
合并两个联合 |
S1 + S2 得到 ['a', 'b', 'c', 'd', 'e'] |
- |
两个集合的差异 |
S1 - S2 得到 ['a', 'b'] |
* |
集合交集 |
S1 * S2 得到 ['c'] |
>< |
两组对称差 |
S1 >< S2 will 得到 ['a', 'b', 'd', 'e'] |
= |
检查两组是否相等 |
S1 = S2 得到布尔值 False |
<> |
检查两组是否不相等 |
S1 <> S2 得到布尔值 True |
<= |
包含(检查一组是否为另一组的子集) |
S1 <= S2 得到布尔值 False |
Include |
在集合中包括一个元素; 基本上是集合和相同基本类型的元素的并集 |
Include (S1, ['d']) 得到 ['a', 'b', 'c', 'd'] |
Exclude |
从集合中排除元素; 基本上是集合和相同基本类型元素的差 |
Exclude (S2, ['d']) 得到 ['c', 'e'] |
In |
检查元素是否在集合中 |
['e'] in S2 得到布尔值 True |
以下示例说明了其中一些运算符的用法-
program setColors;
type
color = (red, blue, yellow, green, white, black, orange);
colors = set of color;
procedure displayColors(c : colors);
const
names : array [color] of String[7]
= ('red', 'blue', 'yellow', 'green', 'white', 'black', 'orange');
var
cl : color;
s : String;
begin
s:= ' ';
for cl:=red to orange do
if cl in c then
begin
if (s<>' ') then s :=s +' , ';
s:=s+names[cl];
end;
writeln('[',s,']');
end;
var
c : colors;
begin
c:= [red, blue, yellow, green, white, black, orange];
displayColors(c);
c:=[red, blue]+[yellow, green];
displayColors(c);
c:=[red, blue, yellow, green, white, black, orange] - [green, white];
displayColors(c);
c:= [red, blue, yellow, green, white, black, orange]*[green, white];
displayColors(c);
c:= [red, blue, yellow, green]><[yellow, green, white, black];
displayColors(c);
end.
尝试一下
编译并执行上述代码后,将产生以下结果-
[ red , blue , yellow , green , white , black , orange]
[ red , blue , yellow , green]
[ red , blue , yellow , black , orange]
[ green , white]
[ red , blue , white , black]