我是scala的新手,我对=和=>有点困惑,我不知道在哪种情况下完全使用 = 和 => 。< / p>
答案 0 :(得分:1)
@RamanMishra的评论是正确的,但是我想扩大一点,希望对您来说更清楚。
a = b
意味着a
现在与b
相等(在该词的命令性含义中,更好地理解为作业)。
它在很多地方都使用过,例如在定义function\method时
def sum(a: Int, b: Int): Int = a + b
以上声明可以理解为:
”我们定义了一个名称为sum
的函数,该函数带有两个Int
类型的参数(a和b)并返回一个Int
。 body \ implementation (主体\实现)与“ a + b
” “相等”。
a => b
意味着,有一个函数,它具有参数列表a
和主体b
,它在两个地方都使用过,包括匿名函数和高阶函数。
val anonymous: Int => Int = x => x + 1
上面的语句可以理解为:
“我们定义了一个名为anonymous
的值,其类型为 function ,其中一个参数的类型为Int
,返回类型为Int
,即“等于''匿名函数,该函数采用一个参数x
(其类型由上下文推断,在此类型中为显式类型签名),其 body 为{{1 }}“
x + 1
上面的语句可以理解为:
“有一个函数(def higherOrder(x: Int, f: Int => Int): Int = f(x)
),它将另一个函数作为参数(sum
),后面是一个函数类型为f
到Int
” 。
正如@Aki所建议的,Int
也用于模式匹配,以将大小写和代码块分隔开来。
=>
“如上例所示,这有点类似于参数列表 def fact(n: Long): Long = n match {
case 0L => 1L
case n => n * fact(n - 1)
}
功能主体”。
PS::这是101个Scala问题,因此并不是此类问题的最佳选择,因为互联网上可能有足够的资源-例如this cheatsheet,或者更好的询问场所-例如scala gitter channel 。