=> in Scala

What does => mean in Scala?

 

操作符=>Scala中什么意思?

 

百度了下,有个论坛给出了比较全面的回答,请参见http://stackoverflow.com/questions/6951895/what-does-and-mean-in-scala

 

为了便于理解,这里翻译下大体内容。

 

Scala中,根据=>出现的场景,=>4种意思。

1、当=>出现在值中(in a value)时,表示进入(introduce)一个函数字面量,或者lambda表达式,比如下列花括号中的内容:

List(1,2,3).map { (x: Int) => x * 2 }

 

2、当=>出现在类型(type)中,其左右两侧都是符号(symbol)时,表示一种语法糖(syntactic sugar),A=>T表示Function<1>[A, T]

(对于Function<1>[A, T],明天再解释)

 

3、当=>出现在方法或者函数参数的类型声明中,在=>左侧没有符号时,表示传名参数(by-name parameter),比如:

 

def unless(cond: Boolean, func: () =>Any)={

   if(!cond) {       

        func()   

   }

}

 

也可表示为:

 

def unless(cond: Boolean, expr: =>Any)={   

   if(!cond) {

        expr   

   }

}

传名函数明天再解释。

 

4=>出现在case语句中,用来分割模式与结果,比如:

case x => y

 

 

题外话:=>怎么发音哪?

http://stackoverflow.com/questions/274022/how-do-i-pronounce-as-used-in-lambda-expressions-in-net/274635

这个论坛中有个讨论,比较统一的读法应该是 goes to

posted @ 2015-05-26 20:26  超仔  阅读(297)  评论(0编辑  收藏  举报