我想要在Scala中實現flatMap
實現的掛起。基於Scala編程的定義FlatMap在scala中的行爲
函數返回元素列表作爲其正確的參數。它將函數應用於每個列表並返回所有函數結果的並置。
我們明白這一點,我有以下實現
val listwords = List(List("abc"),List("def"),List("ghi"))
val res2 = listwords flatMap (_+"1")
println(res2) //output- List(L, i, s, t, (, a, b, c,), 1, L, i, s, t, (, d, e, f,), 1, L, i, s, t, (, g, h, i,), 1)
val res3 = listwords flatMap (_.apply(0).toCharArray())
println(res3) //output- List(a, b, c, d, e, f, g, h, i)
看着這讓我發瘋,爲什麼List[List[String]]
像對待List[String]
第一輸出?
畢竟對於上述問題的回答,有人請幫我執行一個操作,需要挑選每個內部第一個字符串的第一個字符並導致List[Char]
。所以給定listwords
,我想輸出爲List('a', 'd', 'g')
。
你不必叫'headOption'兩次: ''listwords.flatMap是 –
,這也是(_ flatMap(_ headOption)。)應該工作 – maksim07
您確實需要'headOption'兩次,因爲您只需要* first *字符串的第一個字符。 –