Java 程式設計師看scala 程式碼的幾個小問題
阿新 • • 發佈:2018-11-21
最近自己看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呼叫只能使用兩個引數。