名前でScalaの関数呼び出し
2つの方法でScalaのインタープリタ分析関数のパラメータ(関数の引数):
- コール(コールにより値)の場合:パラメータ式の値最初に計算され、その後、内部機能に適用されます。
- 名前コール(コール・バイ・名)によって:パラメータの発現が直接内部関数の計算に適用されていません
パラメータ式の値に基づいて計算された値によって呼び出され、name引数式で呼び出している関数の内部に入る前に、関数内で算出される値です。
これは、インタプリタは、使用する式の値いったん計算されたときに名前でそれぞれを呼び出す、という現象が発生します。
object Test { def main(args: Array[String]) { delayed(time()); } def time() = { println("获取时间,单位为纳秒") System.nanoTime } def delayed( t: => Long ) = { println("在 delayed 方法内") println("参数: " + t) t } }
上記の例では、我々は変数名を設定し、=>記号を使用して入力する名前で呼ばれ、遅延メソッドを宣言します。 上記のコードの実装、次のように、出力結果は次のとおりです。
$ scalac Test.scala $ scala Test 在 delayed 方法内 获取时间,单位为纳秒 参数: 241550840475831 获取时间,单位为纳秒
この方法の例としては、法、印刷法を示す遅延情報を印刷して、受信した値を遅らせ、そして最終的にはトンに戻ります。