-2

我的结果应该是这样的:

{ "Jane Doe" => 10, "Jim Doe" => 6 }

我的代码看起来像这样

    @user.update_column(:message_count, @message.recipient_username)

例如,我得到这个输出:

"Jane Doe"

我不知道如何为这个名称分配一个数字,例如:

{ "Jane Doe" => 1 }

并且当使用相同的命令返回相同的命令时recipient_username,数字应该增加:

@user.update_column(:message_count, @message.recipient_username)
{ "Jane Doe" => 2 }

我想做的最后一件事是,当recipient_username消息是"Jim Doe"并且这个用户名不在哈希中时,应该添加它,例如:

{ "Jane Doe" => 2, "Jim Doe" => 1 }

我阅读了http://www.ruby-doc.org/core-2.0.0/Hash.html但我无法转置它。

4

1 回答 1

1

像这样的东西?

results = Hash.new { 0 }
DATA.readlines.each do  |line|
  name = line.chomp
  results[name] += 1
end

p results

# >> {"John Doe"=>3, "Jane Doe"=>1, "James Dean"=>1, "Jennifer Smith"=>1, ""=>1}
__END__
John Doe
Jane Doe
John Doe
James Dean
Jennifer Smith
John Doe

这会生成具有默认值的新键,并随着您的使用而递增。

于 2013-10-29T10:30:16.283 回答