스위프트 2에서는 어떤 시퀀스 (예 : (String, Int)
)에서 작동하는 함수를 작성할 수있었습니다. 자신의 순서 유형이 튜플로 구성대로, 같은 [String:Int]
같은 사전을 받아 들일 수 있도록 제한된 유형은 특히 유용으로 튜플을 사용스위프트 3에서 일반 시퀀스 매개 변수를 튜플로 제한하는 방법은 무엇입니까?
func test<T: SequenceType where T.Generator.Element == (String, Int)>(input: T) {
for (k, v) in input {
print(k, "=", String(v))
}
}
: 그것은 같은 것을 보았다. 스위프트 3에서
, 나는 유사한 기능이 될 것이다 믿습니다func test<T: Sequence>(input: T) where T.Iterator.Element == (String, Int) {
for (k, v) in input {
print(k, "=", String(v))
}
}
그러나 예를 들어, [String:Int]
전달을 시도 : 지금까지와 같은
Generic parameter 'T' could not be inferred
: test(input: ["a": 1, "b": 2])
는 오류를 발생 내가 알 수 있듯이 Swift 3의 사전은 (Key, Value) 튜플을 이터레이터 유형으로 사용하므로이 방법이 효과가 있다고 생각합니다. 사실 where T.Iterator.Element == String
과 같이 제한된 반복기 유형으로 단일 유형을 사용하지 않으면 [String]
과 같이 전달할 수 있으며 제대로 작동합니다.
내가 빠진 것이 있거나 스위프트 3의 회귀가 될 수 있습니까?
실제로 저는 튜플이 이제 레이블에 대해 더 엄격하다는 것을 기억하고 있다고 생각합니다. 따라서 기능 일 수 있습니다. 나는 내가 그것을 발견 할 수 있는지 알 것이다. ... – Robert
나는 그것을 지금 발견 할 수 없다. 그러나 이것은 기본적으로 나에게 문제를 해결한다. 감사! – Robert