阅读scala函数

rga*_*ber 3 scala function

我正在阅读这个页面,我在scala中遇到了这个函数定义:

def upper: String => String = _.toUpperCase
Run Code Online (Sandbox Code Playgroud)

尝试后,似乎它的工作方式与此相同:

def upper = (str: String) => str.toUpperCase()
Run Code Online (Sandbox Code Playgroud)

两个功能都一样吗?如果是这样,我如何阅读上述功能(第一个)?这种定义定义的方式有特定的名称吗?

Net*_*itz 6

这实际上不是一种功能,而是一种方法.你可以在这里 和这里了解这两者之间的区别

这两个都是相同的,它是一个名为upper的方法,没有参数从String返回一个函数.

def upper: String => String = _.toUpperCase
Run Code Online (Sandbox Code Playgroud)

String => String是鞋面的返回类型.等号后的是实施.下划线只是用于引用函数参数的语法糖.