Scala-方法参数-def函数:Row=>Message={Row=>{

Scala-方法参数-def函数:Row=>Message={Row=>{,scala,function,Scala,Function,来自Java背景,试图理解此Scala代码: def function: Row => Message = { row => { // code // code } } 据我所知,我们传递了一个返回消息类型的函数,然后我们实际实现了row?为什么第一行是大写,第二行不是 谢谢。不太好 def表示您正在定义一个方法。在这种情况下,它不带参数,返回类型为Row=>Message 因此,您定义的函数方法返回一个函数,该函数接受一行并返回一条消息。不完全如此 def

来自Java背景,试图理解此Scala代码:

def function: Row => Message = {
  row => {
    // code
    // code
  }
}
据我所知,我们传递了一个返回消息类型的函数,然后我们实际实现了row?为什么第一行是大写,第二行不是

谢谢。

不太好

def表示您正在定义一个方法。在这种情况下,它不带参数,返回类型为Row=>Message

因此,您定义的函数方法返回一个函数,该函数接受一行并返回一条消息。

不完全如此

def表示您正在定义一个方法。在这种情况下,它不带参数,返回类型为Row=>Message

因此,您定义的函数方法返回一个函数,该函数接受一行并返回一条消息。

让我们对其进行分解

def函数

声明一个名为function的方法,该方法没有输入

:行=>消息


返回类型是将行作为输入并返回消息的函数

=行=>{…}

使用名为row的单个输入定义和匿名函数。这是在Scala中返回的函数。返回块中的最后一个内容,因此您不需要使用return关键字。Scala能够确定此函数的输入和输出类型,因为它们必须与您为me声明的返回类型相匹配方法。

让我们把它分解一下

def函数

声明一个名为function的方法,该方法没有输入

:行=>消息


返回类型是将行作为输入并返回消息的函数

=行=>{…}

使用名为row的单个输入定义和匿名函数。这是在Scala中返回的函数。返回块中的最后一个内容,因此您不需要使用return关键字。Scala能够确定此函数的输入和输出类型,因为它们必须与您为me声明的返回类型相匹配法德

据我所知,我们传递一个返回类型消息的函数

否。未传递任何内容。该方法函数没有任何参数,不接受任何参数,因此无法传递任何参数

然后我们实际实现了row

没有。没有实现任何内容。这里没有要实现的抽象成员或抽象接口

为什么第一排是资本,第二排不是

不必如此。这只是一种约定。类型通常是用PascalCase、参数、字段和方法在camelCase中编写的。实际上,在Java中也是一样的

粗略的Java等价物如下所示:

java.util.Function<Row, Message> function() {
  return row -> {
    // code
    // code
  };
}
正如你所看到的,两者之间并没有太大的区别

据我所知,我们传递一个返回类型消息的函数

否。未传递任何内容。该方法函数没有任何参数,不接受任何参数,因此无法传递任何参数

然后我们实际实现了row

没有。没有实现任何内容。这里没有要实现的抽象成员或抽象接口

为什么第一排是资本,第二排不是

不必如此。这只是一种约定。类型通常是用PascalCase、参数、字段和方法在camelCase中编写的。实际上,在Java中也是一样的

粗略的Java等价物如下所示:

java.util.Function<Row, Message> function() {
  return row -> {
    // code
    // code
  };
}

正如您所看到的,这两者之间并没有太大区别。

返回类型是一个接受Row类型并返回消息的函数。该函数应该有更高级别的实现

检查此链接,它将帮助您了解:

返回类型是一个函数,它接受类型Row并返回消息。该函数应该有更高级别的实现

检查此链接,它将帮助您了解:

这是一个返回函数的方法,该函数接收行并返回消息。您可以这样调用它:val msg:Message=functionRow这是一个返回函数并接收行并返回消息的方法。您可以这样调用它:val msg:Message=functionRow第一行是一个类型,第二行只是一个变量名和c可以是任何内容。变量名按约定以小写开头。第一行是类型,第二行只是变量名,可以是任何内容。变量名按约定以小写开头。