2016-09-25 41 views
0

我試圖提高我的代碼的可讀性,我很難與這個小塊。平坦化語法與收益 - 改善代碼的可讀性

美孚是接受列表[平]的方法

Thing.generate返回一個List [平]

ListOfPings是一個列表[平]

hasQuality從評估返回一個布爾值一平一

下面的代碼:

foo((for { 
      pinger <- listOfPings 
     } yield pinger.generate.filter(_.hasQuality)).flatten) 

listOfPingss中的每個Ping都使用generate方法創建List [Thing],這意味着循環結束時的yield結果是List [List [Ping]]。

我壓扁了List [列表[平安](而不是單個表),並把整個結果爲富

我無法使這看起來更好,可能與flatmap?我衷心感謝幫助。

回答

3

喜歡的東西:

foo { 
    for (p <- listOfPings ; q <- p.generate if q.hasQuality) yield q 
} 
+0

感謝您的答覆,即工作。 – sudom82