Ruby 哈希:类型转换
Ruby Hash: type casting
我正在努力更好地掌握 Ruby 中的写作以及使用哈希表及其值。
1. 假设你有一个散列:
‘FOO’= {‘baz’ => [1,2,3,4,5]}
目标:将每个值以‘Ruby’的方式转换为字符串。
我遇到过多个使用 .each
的例子。
FOO.each = { |k,v| FOO[k] = v.to_s }
但是,这会呈现封装在字符串中的数组。例如。 "[1,2,3,4,5]"
应该是 ["1", "2", "3", "4", "5"]
。
2. 对包含值数组的哈希执行类型转换时,结果是一个新数组吗?或者只是值类型的更改(例如,当应用 .to_s
时,1 变为“1”(假设值是通过上面的 each
枚举器放置的)。
非常感谢您的解释。 Ruby 的新手。
在每个块中,k
和v
是键值对。在您的情况下,'baz'
是关键,[1,2,3,4,5]
是价值。因为你在做 v.to_s
,它会将整个数组转换为字符串而不是单个值。
你可以做这样的事情来实现你想要的。
foo = { 'baz' => [1,2,3,4,5] }
foo.each { |k, v| foo[k] = v.map(&:to_s) }
您可以使用 Hash#transform_values
:
foo = { 'baz' => [1, 2, 3, 4, 5] }
foo.transform_values { |v| v.map(&:to_s) } #=> {"baz"=>["1", "2", "3", "4", "5"]}
我正在努力更好地掌握 Ruby 中的写作以及使用哈希表及其值。
1. 假设你有一个散列:
‘FOO’= {‘baz’ => [1,2,3,4,5]}
目标:将每个值以‘Ruby’的方式转换为字符串。
我遇到过多个使用 .each
的例子。
FOO.each = { |k,v| FOO[k] = v.to_s }
但是,这会呈现封装在字符串中的数组。例如。 "[1,2,3,4,5]"
应该是 ["1", "2", "3", "4", "5"]
。
2. 对包含值数组的哈希执行类型转换时,结果是一个新数组吗?或者只是值类型的更改(例如,当应用 .to_s
时,1 变为“1”(假设值是通过上面的 each
枚举器放置的)。
非常感谢您的解释。 Ruby 的新手。
在每个块中,k
和v
是键值对。在您的情况下,'baz'
是关键,[1,2,3,4,5]
是价值。因为你在做 v.to_s
,它会将整个数组转换为字符串而不是单个值。
你可以做这样的事情来实现你想要的。
foo = { 'baz' => [1,2,3,4,5] }
foo.each { |k, v| foo[k] = v.map(&:to_s) }
您可以使用 Hash#transform_values
:
foo = { 'baz' => [1, 2, 3, 4, 5] }
foo.transform_values { |v| v.map(&:to_s) } #=> {"baz"=>["1", "2", "3", "4", "5"]}