에서 사용자 지정 액세스 연산자를 쓰기 내가 소유되지 않은 참조의 배열이 헬퍼를 구현 : 이제스위프트
class Unowned<T: AnyObject>
{
unowned var value : T
init (value: T) { self.value = value }
func get() -> T { return self.value }
}
를, [ Unowned<Foo> ]
을 할 수 있습니다. 그러나 기본 개체를 검색하기 위해 추가 get()
메서드를 사용하는 것에 만족하지 않습니다. 그래서 저는 맞춤형 이진 연산자를 쓰고 싶습니다. 나는 나가 객체
- 좌가 obvisouly입니다 :
for unownedFoo in ArrayOfUnownedFoos { var bar : Int = unownedFoo-->method() }
나의 현재 접근을 할 수있는 대한
-->
는infix operator --> { } func --><T> (inout lhs: Unowned<T>, inout rhs:() -> Int) -> Int { }
에게 나는이 뒤에 있었다 아이디어를 정의하는 것입니다 배열, 내가 전화를 수행하고 싶습니다
- rhs 내가 전화하고 싶은 방법입니다. 이 경우
method()
은 매개 변수를 취하지 않고Int
을 반환하므로 - 반환 값은 int입니다.
그러나, 다음과 같은 문제가/불확실성이 발생할 :
- 이 올바른 방법인가?
- 위의 가정이 맞습니까?
- 추출 된
Unowned<T>
의 인스턴스에서 제공된 폐쇄rhs
을 어떻게 호출 할 수 있습니까? (의사 코드)lhs.value.rhs()
.method()
이 정적이라면T.method(lhs.value)
을 수행 할 수 있습니다. 그런 다음 메소드의 이름을 추출하여 좀 더 일반적인 것으로 만들어야합니다.
'Int'를 사용하는'->'에 대한 후보 코드에서'T'를 (를) 사용 했습니까? 또는 두 번째 유형 매개 변수, 예를 들어'V'? – GoZoner
그 이유는 메서드의 반환 형식을 참조하기 때문입니다. 물론,보다 일반적인 버전에서 이것은 다른 일반적인 유형이어야합니다. 'V'는 각각 호출 된 메소드의 리턴 유형입니다. –