以下の一般的なregister
メソッドが与えられた場合、:=
演算子をシンボリックエイリアスとして定義したいと考えています。オペレータをScalaのメソッドエイリアスとして定義する最短の表記法は何ですか?
def register[Prop <: Property[_]](prop: Prop): Prop
@inline
final def :=[Prop <: Property[_]] = register[Prop] _
は、もともと私はこのような何か書きたかった:
val := = register _
をしかし、それは私の関数のシグネチャNothing => Nothing
を与えます。私の次の試みは、タイプProp
でそれをパラメータ化することでしたが、それはタイプパラメータを受け取り、それを前方に渡すことができるdef
にする場合にのみ明らかに機能します。
@inline
注釈を省略したいのは理想的ですが、Scalaコンパイラがどのようなオブジェクトコードを作成するかわかりません。
最も重要なの私の目標は、それが:=
メソッドは名前以外register
メソッドのシグネチャのすべての部分を複製して、単純に前者と後者デリゲートを聞かせていないことです。
シグネチャを複製したメソッド委任は、私が避けたがっているものです。私の最後のパラグラフ「最も重要なのは...」を参照してください。また、私は手動で引数を転送する必要はありません。 –
@TimFriske残念なことに、あなたがこれをしたい場合、あなたはする必要があります。 –