Cla*_*ash 5 ruby ruby-on-rails
Ruby有一个叫做单词数组的东西
fruits = %w(Apple Orange Melon)
Run Code Online (Sandbox Code Playgroud)
变
fruits = ["Apple", "Orange", "Melon"]
Run Code Online (Sandbox Code Playgroud)
无论如何我还可以使用Ruby的单词数组作为哈希?
fruits["Apple"]将返回0,1 fruits["Orange"]等等.或者我必须将其声明为哈希?
fruits_hash = {
'Apple' => 0,
'Orange' => 1,
'Melon' => 2,
}
Run Code Online (Sandbox Code Playgroud)
目标是能够将字段保存为整数,但要将其表示为Rails上的字符串.
Aru*_*hit 12
Hash[%w(Apple Orange Melon).each_with_index.to_a]
# => {"Apple"=>0, "Orange"=>1, "Melon"=>2}
Run Code Online (Sandbox Code Playgroud)
这是另一个:
fruits = %w(Apple Orange Melon)
fruit_hash = Hash[[*fruits.each_with_index]]
Run Code Online (Sandbox Code Playgroud)
你实际上并不需要Hash你的情况.在不同的情况下需要哈希,例如.表达如下数据:
{ Apple: :Rosaceae,
Orange: :Rutaceae,
Melon: :Cucurbitaceae } # botanical family
Run Code Online (Sandbox Code Playgroud)
要么
{ Apple: 27,
Orange: 50,
Melon: 7 } # the listing of greengrocer's stock
Run Code Online (Sandbox Code Playgroud)
你不需要Hash简单表达顺序的es,比如{ Apple: 1, Orange: 2, Melon: 3 }- plain array [ :Apple, :Orange, :Melon ]足够好了:
a = :Apple, :Orange, :Melon
a.index :Orange #=> 1
Run Code Online (Sandbox Code Playgroud)
另外,我鼓励你多考虑一下,Symbol而不是String特别是苹果,橙子,甜瓜等.字符串用于推文,消息正文,商品描述......
{ Apple: "Our apples are full of antioxidants!",
Orange: "Our oranges are full of limonene and vitamin C!",
Melon: "Our melons are sweet and crisp!" }
Run Code Online (Sandbox Code Playgroud)