试图通过Ruby中的作业编号找到学生的成绩

时间:2017-09-12 19:45:37

标签: ruby

所以我有如下的哈希:

data = {bill: [100, 95, 92], frank: [67, 73, 84]}

我试图将它构建出去,如果我输入它就会做95:bill,2。

我真的陷入了迭代之中。

我有,但没有工作:

 def scores (grade_hash, student, assign_number)
   grade_hash.map.with_index {|i, x|  puts x-i}
 end

显然,我是Ruby的新手。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

def scores(grade_hash, student, assign_number)
  grade_hash[student][assign_number - 1]
end

puts scores(data, :bill, 2) #=> 95

一些解释:

{bill: [100, 95, 92], frank: [67, 73, 84]}[:bill] #=> [100, 95, 92]
[100, 95, 92][1] #=> 95

答案 1 :(得分:0)

在较新版本的ruby(2.3+)中,您可以使用ArrayHashdig方法,而无需使用自定义方法,但您传入的索引仍然存在需要从0开始:

data.dig(:bill, 2) # => 92
data.dig(:bill, 1) # => 95
data.dig(:bill, 5) # => nil -- they haven't taken 6 tests, yet
data.dig(:john, 1) # => nil -- there is no student 'john'