2017-09-03 14 views
0

以下のコードに従ってください。スカラフラットとの混乱マップ、地図、フラット化

import scala.collection.immutable.HashMap 

def myFunc(map : HashMap[Char,List[MyObject]], text : List[Char]) : List[MyObject] = { 

    text.flatMap(ch => map.get(ch))   //Gives compilation error 
    text.map(ch => map.get(ch)).flatten  //gives compilation error 
    text.flatMap(ch => map.get(ch)).flatten //This works 
} 

最初の2つの方法が機能しない理由はわかりません。

編集
私はここで混乱がHashMap.get()機能付きだと思います

Expression List[List[MyObject]] doesn't confirm to expected type list List[MyObject] 
+0

エラーは何ですかそれは "純粋でない状況で使用される表現"なのでしょうか? – Carcigenicate

+0

@Carcigenicate私はエラーで質問を編集しました – Ashwin

+0

@pedromssエラー – Ashwin

答えて

3

最初の2行のために、このエラーが発生します。関数getはOption[List[MyObject]]を返します。そのため、(3番目の例のように)フラット化するとOptionが削除されます。

Read more on Scala Options here.

+0

で質問を編集しましたありがとう、これは本当に私の質問に答えました! –