an earlier question에서받은 조언에 따라 "별칭"으로 자주 사용하는 일부 외국어 기능의 이름을 단축했습니다. 이것은 확장 기능을 위해 잘 작동했다; 그러나 별칭을 사용하려는 몇 가지 최상위 기능이 있습니다. 단순화 된 예를 들어, generateSequence
기능을 고려하십시오.제네릭을 포함하는 Kotlin 함수의 인라인 별칭?
// DOES NOT COMPILE
inline val <T:Any> seq:(()->T?)->Sequence<T> get() = ::generateSequence
을 ...하지만 잘 in this answer 설명 된 바와 같이 나는 일반은, 수신기 타입에 사용되어야 할 수 없기 때문에 : 나는이 작업을 수행 할 수 있어야합니다. 인라인을 유지하는 최상위 함수 (제네릭 필요)에 대한 별칭을 만드는 다른 방법이 있습니까?
편집 : 나는이 질문을 게시 한 후 Any?
스타 프로젝션 권리를 사용하여 시도,하지만 난 여전히 좋은 답변이라고 생각하지 않습니다 : 그것은 유형 검사를 저해 할 수 있으므로
inline val seq:(()->Any?)->Sequence<*> get() = ::generateSequence
이 boptimalsu 보인다 시퀀스의 요소 유형에 올바른? 다른 답변/생각할 수있는 것에 관해서는?
는
나는 당신의 인라인 함수 접근 방식을 좋아하지만''inline-parameter' 오류의''잘못된 사용법 '을 반환한다고 생각합니다. 나는 인라인 속성을 사용했는데, [이 질문을 일찍] (https://stackoverflow.com/questions/47605151) 질문을 한 후에도 인라인으로 다른 방법을 찾을 수 없었기 때문입니다. 인라인 속성 (함수 참조)이'noinline' 람다 매개 변수가있는 함수보다 성능이 좋지 않다고 생각하십니까? (내가 할 수있는 함수, 즉 제네릭을 필요로하지 않는 함수에 대해 말하고 있다고 가정 할 때)? – sirksel