哈克语 - 设置交集

时间:2016-07-06 16:05:33

标签: hacklang

Hack Setdifference方法,但我没有看到名为intersect的方法或任何类似方法。

如何获得两组的交集?

$set1 = Set { 'a', 'x' };
$set2 = Set { 'b', 'c', 'x', 'y' };
$intersection = ??? // Set { 'x' }

文档:https://docs.hhvm.com/hack/reference/class/HH.Set/

1 个答案:

答案 0 :(得分:2)

我不确定为什么该功能不存在,但您可以将此代码放在某个实用功能中:

  $intersection = Set {};
  foreach ($other as $v) {
    if ($set->contains($v)) {
      $intersection->add($v);
    }
  }

此外,您可以添加一个检查,以便迭代较小的集合。

或者,如果您喜欢一个衬垫,这也有效:)

$set1->filter($x ==> $set2->contains($x))