는 어쩌구 배열이 약간 다르게 작동하는 것입니다 당신이재정의 수 (또는 무엇이든) 특정 배열은
class Blah {
}
을 가지고 있고 나는 그러나 [Blah]
을 가지고 갈거야 말 정상 배열.
예를 들어, 나는 count
는 다음과 같이 작업 할
override count {
c = super.count // an ordinary count of the array
y = count of items where blah.color = yellow
return y
}
은 물론, 내가 스위프트의 적절한 배열 개념을 하위 클래스 수 (또는 무엇이든)을 재정의하는 방법을 알고 말한다.
그러나 배열 [Blah]
...에서 "유일한"개수를 어떻게 재정의 할 수 있습니까?
사용 사례 - 어쩌면 더 좋은 방법이 있습니다. Blah에는 많은 구체적인 하위 유형이 있습니다. Blah, B : Blah .. F : Blah [Blah]를 필터링하여 특정 부분 만 반환하도록합니다 (예 : B 및 D 유형 만 ") 열거하고 개수 등은 켜진 부속 유형에만 해당됩니다. 스위프트의 슬라이스에 감사 드리며 여기에서 관련성이 있습니다.
경우에도 * * 배열의 특정 유형에 대한 재정의'count'은 (AN은'Array'는'struct', 그래서 아무 하위 클래스이다), 의미를 변경할 수있는 좋은 생각되지 않을 것입니다 수 그런 잘 정립 된 개념의 예를 들어'for index in 0 ..
Hamish
@Hamish가 맞습니다.'count'를 무시하는 것은 좋은 생각이 아닙니다. 이제는 '무엇이든'부분에 대해 'Array'에 대한 유형 제약이 도움이 될 것입니다. 'extension Array where Element : Blah' – Alladinian
아래 Andrew의 대답에 동의합니다. 그냥 명시 적으로; 이 마술을하려고하지 마십시오. 즉, 마술과 함께 할 수는 있지만 ObjC 런타임을 사용해야합니다. ISA를 사용하여 개체 (예 : KVO와 동일한 개체)를 바꿀 수 있습니다. "진짜"클래스의 서브 클래스 인 새로운 클래스를 생성하고, 원하는'count' 구현을 추가 한 다음, ISA 포인터 ('object_setClass')를 바꿉니다. 하지만 와우,이 일은 절대해서는 안되 ... : D –