2010-05-08 65 views
1

我有下一個項目的ETS:二郎:找到交點在ETS表

[at, {other_place}, me], 
[other_place, {place}, {other_place}]], 
[at, {place}, me], 
[on, {surface}, {object}], 
[small, {object}] 

和我有列表[[at, door, me],[on, floor, chair],[small, bannanas]]

我需要每一個項目在ETS表比較項目在列表中,如果第一個是相同的原子,則替換圓括號中的項目。因此,如果我有[at, door, me],它與[at, {other_place}, me]匹配,我必須更改所有ets表中原子門的{other_place}

+0

存儲在ets表中的數據是其中一個索引(通常是1)被選作所有數據中的鍵的元組。我不太清楚你希望將你的數據映射到那裏。有很多數據嗎?如果不是,並且您不希望在進程之間共享數據,那麼您可以使用dicts或gb_trees來代替。有些操作更容易。 – rvirding 2010-05-11 12:29:22

+1

什麼是實際問題? – 2010-05-18 16:42:07

回答

0

我認爲這可以通過ets:foldl通過傳遞列表來完成,並將其作爲Acc參數進行比較。

如果需要列表,也可以與lists:foldl摺疊,如果你需要通過它的子列表。