誰でも私にスカラコンパイラの中でcall-by-nameを動作させる方法を説明できますか? そのメソッドの構文ショートカットは次のようになります:arg:=>Int
はarg:() => Int
に変換され、渡されたパラメータを関数にキャプチャします。 すなわち、実際のタイプのcall-by-nameパラメータ:Function0[_]
?call-by-nameパラメータ
ありがとうございました。
誰でも私にスカラコンパイラの中でcall-by-nameを動作させる方法を説明できますか? そのメソッドの構文ショートカットは次のようになります:arg:=>Int
はarg:() => Int
に変換され、渡されたパラメータを関数にキャプチャします。 すなわち、実際のタイプのcall-by-nameパラメータ:Function0[_]
?call-by-nameパラメータ
ありがとうございました。
私が質問を正しく理解しているとしたら、=> Int
の構文は基本的に匿名のパラメータなし関数() => Int
の軽量構文であり、ScalaのFunction0[Int]
という形で表されます。さらに、VM by-nameパラメータ内で内部クラスに変換されます。
あなた自身が発見した名前によるパラメータは、Function0[A]
になります。彼らはファーストクラスのサポートを持っていないので、そのような異なるタイプはありません。
ScalazのName
を使用して、これらの行に沿って何かを達成することができます。そのためには、受け入れられた答えhereを参照してください。
"タイプ別名前"のようなものはありません。 By-nameは型ではなく、パラメータ渡しモードです。
by-nameを渡すパラメータの代わりにFunction0
を使用できますが、セマンティクスは異なります。
何をしますか?問題ははっきりしていません。 –
@ DanielC.Sobralこんにちは。 'def foo(i:=> Int):[Int、Function1 [ここでは、 'call-by-name'パラメータのタイプ、[_、_]]]のいずれかが必要です。 **どのように私はそれを書くことができますか?**純粋に仮想の質問... – dvigal