?
目前仅知道和匿名函数有关
?
不过stackoverflow?上关于这方面的讨论挺多的,故在此记录一下
?
比如来自?http://stackoverflow.com/questions/6951895/what-does-and-mean-in-scala?的一位的回复:
?
=>?has several meanings in Scala, all related to its mathematical meaning as implication.
In a value, it introduces a function literal, or?lambda. e.g. the bit inside the curly braces in?List(1,2,3).map { (x: Int) => x * 2 }
In a type, with symbols on both sides of the arrow (e.g.?A => T
,?(A,B) => T
,?(A,B,C) => T
, etc.) it‘s sugar for?Function<n>[A[,B,...],T]
, that is, a function that takes parameters of type?A[,B...]
, and returns a value of type?T
.
Empty parens on the left hand side (e.g.?() => T
) indicate that the function takes no parameters (also sometimes called a "thunk");
Empty parens on the right hand side denote that it returns?()
—the sole value of type?Unit
, whose name can also be written?()
—confused yet? :)
A function that returns Unit is also known as a?procedure, normally a method that‘s called only for its side effect.
In the type declaration for a method or function parameter, with no symbol on the left hand side (e.g.?def f(param: => T)
) it‘s a "by-name parameter", meaning that is evaluated every time it‘s used within the body of the function, and not before. Ordinary "by-value" parameters are evaluated before entry into the function/method.
In a?case
?clause, they separate the pattern (and optional guard) from the result expression, e.g.?case x => y
.
?
?
?
?
http://stackoverflow.com/questions/6951895/what-does-and-mean-in-scala
?
http://stackoverflow.com/questions/7888944/scala-punctuation-aka-symbols-and-operators
原文:http://zhouchaofei2010.iteye.com/blog/2251731