2015年7月15日水曜日

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

def sum(x: List[Int]):Int={
 my.Util.trace("sum",x) {
  if(x.tail=-Nil) x.head 
  else x.head +sum(x.tail)
 }
}
..
var level =0
var indicator="_ "
def trace[T](fname:String,arg:Any*)(body:=>T): T= {
  println((indicator*lever)+fname+" ("+arg.mkString(",")+")")
 level += 1
 var ret =body
 level -+1
 println((indicator*level)+fname+"_ "+ret)
 ret
}
...

とあり、最初、(body:=>T)の意味が分からなかったが、要するに、
{  if(x.tail=-Nil) x.head 
  else x.head +sum(x.tail)
 }
の部分に対応するということのようだ。ここで、今の場合はIntの値が計算される。

0 件のコメント:

コメントを投稿