此代码是否存在常见的ruby习语:
if hashmap.has_key?(key)
hashmap[key] += 1
else
hashmap[key] = 1
end
感觉可能有一个高阶函数在这里有所帮助。我希望得到像
这样的东西hashmap[key].insertOrUpdate { 1 }, {|value| value += 1}
编辑虽然@Santhosh的答案很酷并且适用于我的特定示例,但我对一般情况更感兴趣。我认为@ sawa的答案给出了最大的灵活性,因为传入的代码块允许复杂的逻辑,如散列哈希等...
答案 0 :(得分:2)
您可以利用nil.to_i
为0
hashmap[key] = hashmap[key].to_i + 1
答案 1 :(得分:2)
您可以使用fetch
提供默认值:
hashmap[key] = hashmap.fetch(key, 0) + 1
答案 2 :(得分:1)
你可以写:
hashmap = {}
key = 'cat'
hashmap[key] = (hashmap[key] || 0) + 1 #=> 1
hashmap[key] = (hashmap[key] || 0) + 1 #=> 2
答案 3 :(得分:0)
而不是你做了什么,更好的方法是:
hashmap[key] += 1
然后你只需要这样做:
if (($_SESSION['member_type'] != 1) && ($_SESSION['member_type'] != 0)) {
echo "<h2>You are not authorized to access this page.</h2>";
exit();
}