1. 程式人生 > >Java 程式設計師看scala 程式碼的幾個小問題

Java 程式設計師看scala 程式碼的幾個小問題

最近自己看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呼叫只能使用兩個引數。