如果您有一系列哈希,例如:
t = [{'pies' => 1}, {'burgers' => 1}, {'chips' => 1}]
将1
添加到具有特定键(例如'pies'
的哈希值)的有效且可读的方法是什么?
答案 0 :(得分:4)
这是基于所需键增加数组哈希值的一种方法:
t = [{ 'pies' => 1 }, { 'burgers' => 1 }, { 'chips' => 1 }]
t.each { |hash| hash['pies'] += 1 if hash.key?('pies') }
# => [{"pies"=>2}, {"burgers"=>1}, {"chips"=>1}]
希望这有帮助!
答案 1 :(得分:2)
如果您知道只有一个哈希值可以使用关键词'然后你可以使用find并增加它的值,如:
#include"string.h"
int main() {
Str s1("Hello ");
Str s2("World");
Str s3(", my ");
Str s4("Name ");
Str s5("is ");
Str s6("Chad!");
Str s7;
s7.copy(s1);
s7.concatenate(s2);
s7.concatenate(s3);
s7.concatenate(s4);
s7.concatenate(s5);
s7.concatenate(s6);
s7.print();
std::cout << "\n\n";
Str s8("Hello World, My Name is Chad!");
if (s8.compare(s7) == 1) {
std::cout << "They Match!" << std::endl;
}
Str s9("I dont match....");
if (s9.compare(s8) == 0) {
std::cout << "I differ by " << s8.compare(s6) << " characters" << std::endl;
}
}
Enumerable#find
将尝试查找满足该块的元素,并在返回true时停止迭代。
答案 2 :(得分:0)
您使用的是错误的数据结构。我建议使用哈希。
菜单上的每个项目只能有一个计数(或销售),即每个项目都是唯一的。这可以使用具有唯一键(项)的哈希以及它们对应的值(计数)建模。
t = {'pies' => 1, 'burgers' => 1, 'chips' => 1}
然后我们可以访问密钥并添加到计数中:
t['pies'] += 1
t #=> t = {'pies' => 2, 'burgers' => 1, 'chips' => 1}