=> in Scala

时间:2022-04-08 15:27:45

What does => mean in Scala?

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

百度了下,有个论坛给出了比较全面的回答,请参见http://*.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://*.com/questions/274022/how-do-i-pronounce-as-used-in-lambda-expressions-in-net/274635

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