如何检查集合中是否包含子集? [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我有两个set类型变量,我需要检查第一个是否是第二个的子集。

type
  TMyValue = (mvOne, mvTwo, mvThree);
  TMyValues = set of TMyValue;

...

var
  V1 : TMyValues;
  V2 : TMyValues;
begin
  V1 := [mvOne, mvTwo];
  V2 := [mvOne, mvTwo, mvThree];

  if(V1 in V2)
  then ShowMessage('V1 is a subset of V2')
  else ShowMessage('V2 is not a subset of V2');
end;

示例代码在编译时给出了以下错误:

[DCC错误] Unit1.pas(36):E2010不兼容类型:'TMyValues'和'TMyValue'

是否有操作员或“嵌入式功能”来检查V1的值是否都在V2中?

delphi set operators delphi-2007
1个回答
3
投票

设置运算符<=允许检查V1是否是V2的子集(reference to online help

if(V1 <= V2)...

请注意,空集是任何集的子集。

运算符in应该检查集合中单个元素的外观,所以这里的用法是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.