Ruby on rails 散列中的重复项
我正在工作,除了一个小错误,几乎完成了 在下面的:prompts中是一个数组,为了参数起见,它是Ruby on rails 散列中的重复项,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在工作,除了一个小错误,几乎完成了 在下面的:prompts中是一个数组,为了参数起见,它是[“一”、“二”、“三”、“三”、“四] def ask_reader(prompts) @answers = {} for p in prompts puts "Give me a #{p}" @answers[p] = gets.chomp end end 这很好,我得到了一个答案散列和相应的答案,除了第二个答案[p]将覆盖第一个答案,因此
[“一”、“二”、“三”、“三”、“四]
def ask_reader(prompts)
@answers = {}
for p in prompts
puts "Give me a #{p}"
@answers[p] = gets.chomp
end
end
这很好,我得到了一个答案散列和相应的答案,除了第二个答案[p]将覆盖第一个答案,因此我只有一个“三”的值“.有没有好的‘ruby’方法来解决这个问题?谢谢。如何使用具有内部字段“提示”的某种包装对象作为键?如何使用具有内部字段“提示”的某种包装对象作为键?如何将提示映射到值列表,如下所示: prompt1=>[“一个”] prompt2=>[“两个”] prompt3=>[“三”,“三”]
prompt4=>[“四”]如何将提示映射到值列表,如下所示: prompt1=>[“一个”] prompt2=>[“两个”] prompt3=>[“三”,“三”] prompt4=>[“四个”]两个明显的选项: 通过
数组#zip
交叉引用原始提示数组和答案数组:
def ask_reader(prompts)
prompts.inject([]) do |accu, p|
puts "Give me a #{p}"
accu << gets.chomp
accu
end
end
["one", "two", "two"].zip(["1", "2", "3"])
# => [["one", "1"], ["two", "2"], ["two", "3"]]
或者,将散列
与数组
值一起使用
def ask_reader(prompts)
prompts.inject({}) do |accu, p|
puts "Give me a #{p}"
(accu[p] ||= []) << gets.chomp
accu
end
end
def ask_读取器(提示)
prompts.injection({})do|accu,p|
把“给我一个#{p}”
(accu[p]| |=[])两个明显的选项:
通过数组#zip
交叉引用原始提示数组和答案数组:
def ask_reader(prompts)
prompts.inject([]) do |accu, p|
puts "Give me a #{p}"
accu << gets.chomp
accu
end
end
["one", "two", "two"].zip(["1", "2", "3"])
# => [["one", "1"], ["two", "2"], ["two", "3"]]
或者,将散列
与数组
值一起使用
def ask_reader(prompts)
prompts.inject({}) do |accu, p|
puts "Give me a #{p}"
(accu[p] ||= []) << gets.chomp
accu
end
end
def ask_读取器(提示)
prompts.injection({})do|accu,p|
把“给我一个#{p}”
(accu[p]| |=[])更简单的方法
a = %w[one two three four]
h = Hash.new { |hash, key| hash[key] = a.find_index(key)+1}
p h["one"]
p h["three"]
更简单的方法
a = %w[one two three four]
h = Hash.new { |hash, key| hash[key] = a.find_index(key)+1}
p h["one"]
p h["three"]
谢谢,我使用了第一个解决方案(因为它是最容易理解的)。谢谢,我使用了第一个解决方案(因为它是最容易理解的)。您希望算法如何为相同的对象生成唯一的哈希代码?如果需要此功能,您使用的数据结构是错误的。您希望算法如何为相同的对象生成唯一的哈希代码?如果需要此功能,则使用了错误的数据结构