今日、私は '=> SomeType'の意味を聞きたいと思います。私はそれがthis articleで使用されていることを発見しました。それは「シーケンシャル・コンビネータ」の部分にあります。Scala - '=> SomeType'とはどういう意味ですか?
ありがとうございました!
今日、私は '=> SomeType'の意味を聞きたいと思います。私はそれがthis articleで使用されていることを発見しました。それは「シーケンシャル・コンビネータ」の部分にあります。Scala - '=> SomeType'とはどういう意味ですか?
ありがとうございました!
実行可能なコードブロックを意味します。例えばので
:この場合
scala> def doTwice(op: =>Unit) = {op; op}
doTwice: (op: => Unit)Unit
scala> doTwice({println("Hi")})
Hi
Hi
は=>Unit
はここ{println("Hi")}
"SomeType" であるprintln
値を生成しないので、ユニットです。 Int
が生成された場合は=>Int
となります。
これは単なるパラメータを取らない関数値のタイプです。 オーウェンの例はクールで、ちょうど "A => B"はA型のパラメータとB型の戻り値を持つ関数であり、 "=> B"はパラメータを取らずに返しますタイプBの値。
2つのことを示します。まず、接頭辞=>
のために、パラメータがby nameを渡すことを示します。次に、渡されたパラメータのタイプがSomeType
である必要があることを示します。
=> SomeType
はタイプそのものであると考えている人もいれば、2人を争う人もいます。これは、パラメータ評価戦略とパラメータ型という2つの要素の組み合わせです。だから、
、Wikipediaのリンクは、あなたがこの持っている場合は、物事を明確にしていない場合は名前で呼び上の簡単な説明、:
{ some stuff; some stuff }
:
def f[A](x: => A) = { x; x }
f(some stuff)
を次にScalaは、次のようにこれを実行しますパラメータということも
val x = some stuff
{ x; x }
注:何が起こることより、このようなものです値によってコールで
、 は常にで評価されますが、値は1回だけです。名前による呼び出しでは、は決してと評価されます(たとえば、if
の非実行ブランチにある場合)。しかし、何度も評価される可能性があります。
この場合、[A]は何を表していますか?私は数多くの場所でそれを見てきましたが、まだそれを得ていません。 –
@elimence _typeパラメータ_です。これは、 'f'が宣言された時点では知られていないが、' f'が使用された時点では認識される型です。関数 'f'はすべての型' A'に対して有効です。この場合、 'A'が何であるかについての制限はありません。下位境界( 'A'は' SomeConcreteType'またはそれのサブタイプでなければなりません)、 'A :::SomeOtherType'(' A'は 'SomeOtherType'のスーパークラスでなければなりません)を示す' A <:SomeConcreteType' 'A'が何らかの暗黙的なパラメータの一部でなければならないことを示すだけでなく、' A'ができることに任意の制限をもたらします。 –
Danielさん、ありがとう –
おっと、わかります。ありがとう!これは私がスカラについて嫌いなものです。それはこのようなGoogleの事にばかげて難しいです:)良い人とstackoverflowのための神に感謝:) – Arg
良い例。ここで、 'op'は名前*パラメータ(*は値*ではなく)で呼び出されます。 'doTwice(println(" Hi "))'と書くことも同様にうまくいくことに注意してください。 Scalaで関数を呼び出すと、* name *または* value *でパラメータを渡すかどうかは構文によって示されません。 –
@Arg [SymbolHound](http://symbolhound.com/)はあなたの友人です。 –