我想在Clojure中做类似的事情:
#增加功能/类别对的计数
def incf(self,f,cat):
self.fc.setdefault(f,{})
self.fc[f].setdefault(cat,0)
self.fc[f][cat]+=1
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
我认为接近并行是fnil一个函数和一些默认参数值,然后返回一个函数,如果使用nil参数调用将使用默认值:
(defn incf [fc f cat]
(update-in fc [f cat] (fnil inc 0)))
(incf {} :feature-foo :category-bar)
=> {:feature-foo {:category-bar 1}}
Run Code Online (Sandbox Code Playgroud)
这里我们update-in用来更新输入映射中的嵌套值,并用于fnil设置默认值零,如果它不存在则递增.