0
以下定义有什么区别?两种方法定义有什么区别?
1.def debug(msg: => AnyRef) = { println(String.valueOf(msg)) }
2.def debug(msg:() => AnyRef) = { println(String.valueOf(msg)) }
的第一个定义可以接受任何事情,字符串或功能等,但第二个只能接受功能。我想知道reazon。
scala> def debug(msg: => AnyRef) = { println(String.valueOf(msg)) }
debug: (msg: => AnyRef)Unit
scala> debug("hi")
hi
scala> debug(() => "xx")
<function0>
scala> def debug(msg:() => AnyRef) = { println(String.valueOf(msg)) }
debug: (msg:() => AnyRef)Unit
scala> debug("hi")
<console>:9: error: type mismatch;
found : java.lang.String("hi")
required:() => AnyRef
debug("hi")
^
感谢您告诉我这是一个'按名称'的函数,所以我可以从http://stackoverflow.com/questions/4986557/scala-call-by-name-confusion获得更多细节。 – 2012-02-15 01:59:23