我有一組項目,讓我們稱他們爲Effect
,我也有一組possibleEffects : Set[Effect]
對於理解過濾選項進行
我需要通過效果列表進行迭代,只有返回的Cause
列表第一個Cause
我找到每個Effect
。可能有重疊原因導致多個效應,這就是爲什麼結果需要在一個集合中。我需要這個儘可能快,因爲它執行很多次。我想出了以下內容(不確定它是否是最好的方法,我是scala的新手)。
我想使用find()
方法返回Option[Cause]
。有沒有辦法將那些返回None
(它不會在現實中發生,在列表中總是存在的原因,除非我有一個錯誤)發生,並且將它從Some monad中提取出來以便理解?我似乎無法在其中使用matches
。
val firstCauses : Set[Cause] = (for {
effect <- effects
possibleCause = allCauses.find(_.possibleEffects.contains(effect))
//todo: filter out possibleCause if it is not Some(Cause), and get it out of the Some monad so that the yield takes it
} yield possibleCause).toSet
那豈不是更容易做到設置交叉點? –
如何設置交叉點以實現我所需要的?只要我在'possibleEffects'中找到一個對'效果'有影響的'原因',我想停下來移動到下一個效果。我不想迭代到最後。除非我誤解了某些東西。實際上'possibleEffects intersects effects'總會返回至少一個元素,這就是爲什麼我說'None'永遠不會發生的原因 – jbx