2015年7月12日日曜日

scalaファンクショナルデザイン P118

クロージャーの利点について書かれてあります。
○コード削減重視バージョン
 ...............
  def output(sw:Int)={
      val sum=....
        .......
      for (.............
     for (k<-0 to3){
    .......................※計算あり....
             if (sw==1) .......
             else .................

  println(output(1))
    println(output(2))........

 これだと、その都度、※の部分で同じ計算がされてしまう

○クロージャーバージョン
  def output() ={
   val sum= ......
   .........
   for(...........
   for (k<-0 to3){
    .......................※計算あり....
   }
   (sw:Int)=> {  //クロージャー生成
    ....
     for (k<-0 to 3) {.............
            if (sw==1) .......
             else .................

val f=opuput()
println(f(1))
println(f(2))
................

  ※の部分がクロージャーの外側にあるので、最初の1回しか実行されない。
ということのようだ。
  いろいろなサイトでも、クロージャーについてわかりやすく書かれているので参考になりました。javascriptやjqueryでも利用されているのだと、今頃になって知りました。

0 件のコメント:

コメントを投稿