2016-07-06 2 views
1

У Hack Set есть метод difference, но я не вижу метода под названием intersect или любого подобного.Язык взлома - Установить перекресток

Как добраться до пересечения двух комплектов?

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

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

ответ

2

Я не уверен, почему эта функция не существует, но вы можете поместить этот код в некоторой функции полезности:

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

Кроме того, вы можете добавить проверьте, чтобы вы перебирали меньший набор.

ИЛИ, если вы хотите один лайнеры, это также работает :)

$set1->filter($x ==> $set2->contains($x)) 
Смежные вопросы