Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将其更改为val函数_Java_Scala_Apache Spark - Fatal编程技术网

Java 如何将其更改为val函数

Java 如何将其更改为val函数,java,scala,apache-spark,Java,Scala,Apache Spark,我想做一些类似于rdd.foreach(functionHere)的事情,我希望函数在Java中是静态等价的。我想把def改成val,但我就是搞不懂语法 我基本上想要java代码,基本上是rdd.foreach(myscalass.nothing()) 我将如何做到这一点 可能吗?您的意思是要将函数作为变量传递吗?如果是这样,您可以编写一个函数文本: val nothing=(行:行)=>Unit 然后通过调用以下命令调用它: def nothing(row:Row): Unit = { }

我想做一些类似于
rdd.foreach(functionHere)
的事情,我希望函数在Java中是静态等价的。我想把
def
改成
val
,但我就是搞不懂语法

我基本上想要java代码,基本上是
rdd.foreach(myscalass.nothing())

我将如何做到这一点


可能吗?

您的意思是要将函数作为变量传递吗?如果是这样,您可以编写一个函数文本:

val nothing=(行:行)=>Unit

然后通过调用以下命令调用它:

def nothing(row:Row): Unit = {

}

您不需要使用
val
rdd.foreach(MyScalaClass.nothing)
应该可以正常工作。Scala会自动将方法转换为函数。Java的等价物是
rdd.foreach(myscalass::nothing)

太好了!如何填写方法正文?换句话说,“val nothing”函数,我如何填写它来根据行执行操作?另外,我知道这是一个完全的noob问题,我对Scala完全不熟悉,也不能理解语法:(我不知道我是否理解,因为你表示你想要一个不做任何事情的函数,但是如果你想要一个body(可能仍然返回Unit),在我的示例中,你会用{your code here}替换“Unit”。换句话说,在=>之后是代码主体:{…code…}超过1行或多行。如果您的代码可以放在=>之后的一行上,则不需要使用括号。如果您考虑foreach调用,并且认为RDD是一个“行列表”基本上,您可能仍然希望以某种方式处理每行中的数据,即使您不想返回某些内容。这是我的用例。无论如何,您的建议解决了它,谢谢much@HarshilGarg,您已经掌握了一些重要的Scala概念:在Scala或函数编程术语中,您需要一个不返回值的函数而不是只执行副作用。
nothing(aRow)