아래의 일반 register
메서드를 사용하면 :=
연산자를 기호 별칭으로 정의하고 싶습니다. 스칼라에서 연산자를 메서드 별칭으로 정의하는 가장 짧은 표기법은 무엇입니까?
def register[Prop <: Property[_]](prop: Prop): Prop
@inline
final def :=[Prop <: Property[_]] = register[Prop] _
원래 나는 이런 식으로 뭔가 쓰고 싶다 :
val := = register _
를하지만 나에게 함수 서명 Nothing => Nothing
을 제공합니다. 내 다음 시도는 유형 Prop
으로 매개 변수화하는 것이었지만 유형 매개 변수를 사용하고 이후에 전달할 수있는 def
으로 만들면 분명히 작동합니다.
이상적으로는 @inline
주석을 생략하고 싶지만 스칼라 컴파일러가 어떤 객체 코드를 작성하는지 잘 모르겠습니다.
에서 가장 중요한 역할을 한 내 목표는이 :=
방법은 이름을 제외하고 register
방법의 서명의 모든 부분을 복제하고 단순히 후자에 대한 전 대표를 할 수있는 것이 아니다.
중복 서명을 사용하는 메소드 위임은 내가 피하고 싶었던 것입니다. 마지막 단락 인 "가장 중요하게 생각하는 것 ..."을보십시오. 또한 수동으로 인수를 전달하지 않아도됩니다. –
@TimFriske 불행히도, 당신이 이것을 원한다면해야 할 것입니다. –