2017-05-07 11 views

答えて

3

関数を呼び出すと、引数に関数を適用していると言われます。期待される引数をすべて渡したら、それを完全に適用したことになります。いくつかの引数だけを送信すると、部分的に適用された関数が返されます。これにより、いくつかの引数を束縛し、後で残りの部分を埋めるのが便利になります。

:log()メソッドは、dateとmessageの2つのパラメータをとります。このメソッドを複数回呼び出すには、dateの値は同じで、messageの値は異なります。その引数をlog()メソッドに部分的に適用することで、各呼び出しに日付を渡すというノイズを排除できます。これを行うには、最初に日付パラメーターに値をバインドし、その場所にアンダースコアを挿入して、2番目のパラメーターをバインド解除したままにします。その結果、部分的に適用された関数が変数に格納されます。

object Demo { 
    def main(args: Array[String]) { 
     val date = new Date 
     val logWithDateBound = log(date, _ : String) 

     logWithDateBound("message1") 
     Thread.sleep(1000) 

     logWithDateBound("message2") 
     Thread.sleep(1000) 

     logWithDateBound("message3") 
    } 

    def log(date: Date, message: String) = { 
     println(date + "----" + message) 
    } 
} 
次の例を試してみてください
関連する問題