Java 程序员看scala 代码的几个小问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hhtop112408/article/details/82422868

最近自己看Scala 的代码,有两个小的的问题说一下

1:FPGrowth 中run的代码的参数是什么,编译器提示是Basket,但是根本没有这个类。看了源码,就是在函数中定义了一个类似别名的class,其实是Iterable<T>。可以传入的参数是比如JavaRDD<List<String>>.

2:Scala 中的函数 def extract(
      minCount: Long,
      validateSuffix: T => Boolean = _ => true): Iterator[(List[T], Long)]

validateSuffix: T => Boolean = _ => true 我看了好久,这个是什么东西?其实也简单,先分开看 如果是

validateSuffix: T => Boolean 那么久简单了,就是一个Function1, T是参数,返回值是Boolean,

可以new Myfunction1<String, Boolean> 作为参数。注意的是,当用java调用时,Boolean 的类型变为了Object, 这个问题一直是Java调用Scala的问题。需要去看Scala的源代码才知道真正的返回值。

现在在看整个代码validateSuffix: T => Boolean = _ => true就简单了,就是有一个返回True的缺省函数。如果用scal调用,就可以直接只传一个参数,但是用java调用只能使用两个参数。

猜你喜欢

转载自blog.csdn.net/hhtop112408/article/details/82422868
今日推荐