2017-02-27 11 views
2

Array 유형을 확장하려고하지만 유형이 Int 또는 Float 인 경우에만 사용할 수있는 기능이 필요합니다.where 절에서 또는 (||)을 사용할 수 있습니까?

extension Sequence where Iterator.Element == Int { } 

하지만 그것은 여러 유형 수행 할 수 있습니다

은 내가 한 가지 유형에 대해이 작업을 수행 할 수있어? 이것은 내가 원하는 것입니다.

extension Sequence where Iterator.Element == Int || Iterator.Element == Float { } 

이것을 수행 할 수 있습니까?

답변

2

이것은 실제로 개념적으로 작동하지 않습니다. 확장 기능에서 where를 사용하면 Element를 지정한 유형으로 사용할 수 있습니다. 여러 유형이 될 수 있다고 말하는 경우 where 지정자가 전혀 없을 수도 있습니다.

여러 유형의 특정 기능을 추가하려는 경우 빈 프로토콜을 만들고 원하는 유형을 준수하는 것이 좋습니다. 예 :

protocol WorksWithExtension { } 

extension Int: WorksWithExtension { } 
extension Float: WorksWithExtension { } 

extension Sequence where Iterator.Element: WorksWithExtension { 
    //Do whatever you need to do here 
}