Ruby 如何向字符串添加哈希键和值

Ruby 如何向字符串添加哈希键和值,ruby,hash,Ruby,Hash,我有一个杂烩 hash = {"a" => 100, "b" => 200, "c" => 300} 并希望将其键和值添加到字符串中 我有以下代码: result_string = '' hash.each do |key, value| result_string += 'key: ' result_string += key result_string += ', value: ' result_string += value re

我有一个杂烩

hash = {"a" => 100, "b" => 200, "c" => 300}
并希望将其键和值添加到字符串中

我有以下代码:

result_string = ''
hash.each do |key, value|
    result_string += 'key: '
    result_string += key
    result_string += ', value: '
    result_string += value
    result_string += ', '
end
结果将是:

"key: a, value: 100, key: b, value: 200, key: c, value: 300,"
此代码会将当前键添加到字符串中。但是,它不能将
解析为它的值,我想知道这是为什么。

有一种更简单的方法:

hash.map { |key, value| "key: #{key}, value: #{value}" }.join(', ')
#=> "key: a, value: 100, key: b, value: 200, key: c, value: 300"

有几十种方法可以实现这一点。这个怎么样。。。假设你有一个散列,那么你可以通过

在这种情况下,将生成您要查找的字符串数组:
[“key:foo,value:bar”,“key:batz,value:boo”]

回答您的问题:问题出在
result\u string+=value
,不能用
+
将整数添加到字符串中,它应该预先强制执行:

result_string += value.so_s

至于为什么你的代码不工作——如果你尝试运行它,你会得到

TypeError
:没有将
Fixnum
隐式转换为
String

这是因为您试图将数字(您的值)添加到字符串中。要修复它,可以显式地将键和值转换为字符串。所以

result_string += key
变成

result_string += key.to_s
result_string += value.to_s

变成

result_string += key.to_s
result_string += value.to_s

显然我需要的是
.map
。谢谢你!将
添加到
也帮助我解决了这个问题。非常感谢。啊哈!这可能是我从您那里看到的可读性最低的代码@EricDuminil Honestly,我决定把它张贴在这里只是为了荣誉>代码> %W键:\Value:方法(:zip)< /代码>。不清楚你的代码的预期和结果是什么。如果你正在调试,请考虑<代码>哈希。检查< /代码>。同样为了调试,请尝试
p hash
,这相当于
放置hash.inspect
result_string += value.to_s