没有整个实例的Scala字段捕获方法

时间:2019-06-26 17:20:22

标签: scala apache-spark lambda higher-order-functions

我有一段看起来像这样的代码:

val foo = df.map(parser.parse) // def parse(str: String): ParsedData = { ... }

但是,我发现将lambda传递给捕获this的Scala,我想Scala将上面的代码处理为:

val foo = df.map(s => /* this. */parser.parse(s))

我打算通过轻量级捕获。在Java中,我会做parser::parse,但这在Scala中不可用。

这可以解决问题:

val tmp = parser // split val read from capture; must be in method body
val foo = df.map(tmp.parse)

但是会使代码有些不愉快。 @ tiago-henrique-engel提供的answer可以这样使用:

val tmp = parser.parse _
val foo = df.map(tmp)

但是它仍然需要一个临时值。

因此,有没有一种方法可以将轻量级捕获传递给map而又不先将其存储到某些val中以保持代码干净?

0 个答案:

没有答案