2011-07-13 148 views
4

我已經使用List.exists(),我想知道是否存在Db的等價物。如果我有一個函數f(e):bool,我想知道是否至少有一個元素e,f(e) - > true。 目前我使用Db.intmap_fold_range(),但它遍歷所有的Db,而在第一次返回true時停止性能會更好。Db的List.exists的等價物

回答

3

我想你的DB是一個IntMap,如果你可以使用Db.intmap_fold_range

這是一個示例代碼:

// Testing function 
f(key, val) = key == 42 

// Check existence in "mymap" 
res = IntMap.exists(f, /mymap) 

如果你看一下源代碼,你可以看到它是針對只在必要的元素摺疊實現:)(文件:stdlib/core/map/map.opa

+0

喜,你不覺得IntMap.exists(f,/ mymap)會在Db執行之前創建一個新的映射嗎?我聽說在Db上使用Map函數是不行的,因爲每次都會創建一個新的地圖(因此我們使用Db.intmap_fold_range()) – trecouvr