我需要处理来自Scala的Java 8流。什么是Scala中Java 8 ::
运算符的等价物?
// Java
IntStream.range(1, 4)
.forEach(System.out::println);
// Scala
IntStream.range(1, 4)
.forEach() // <- ???
答案 0 :(得分:4)
您可以在编译或运行REPL时使用-Xexperimental
,以便访问将Scala函数转换为所需Java SAM的实验性功能:
IntStream.range(1, 4).forEach(System.out.println(_))
答案 1 :(得分:1)
这很简单:
scala> (1 to 4).foreach(println)
1
2
3
4
在Scala中,引用方法而不提供参数,例如:
def fn(arg: SomeType)
(collection_of_some_type).foreach(fn)
被贬低为
(collection_of_some_type).foreach(fn(_))
反过来转换为:
(collection_of_some_type).foreach(next_entry => fn(next_entry))
答案 2 :(得分:0)
scala中方法引用的等价物如下:
IntStream.range(1, 4)
.forEach(System.out.println _)