func allPresent<T..., U...>(haystacks: T..., needles: U...) -> Bool where T == Set<U> { for (haystack, needle) in zip(haystacks, needles) { guard haystack.contains(needle) else { return false } } return true }
T
と U
の間に Constraint を書くと、T...
と U...
の個数が同じって制約も付くらしい