如何比较方法输入参数值与哈希

时间:2017-08-25 19:11:10

标签: ruby ruby-on-rails-4

我有以下方法

def method(value)
hash = {a: 'abc', b: 'bde'}

get_value = hash.send(value)

end

如何将输入参数值与散列键进行比较,并将该键值分配给get_value

编辑:因此,如果输入值为a,则将其值abc与哈希值分配给get_value

1 个答案:

答案 0 :(得分:2)

您可以使用哈希的普通#[]方法来提取值,

def do_something(value)
  hash = { a: 'abc', b: 'bde' }

  get_value = hash[value]
end

如果您在传递错误密钥时想要出错,可以使用fetch

def do_something(value)
  hash = { a: 'abc', b: 'bde' }

  get_value = hash.fetch(value)
end

最后,如果找不到密钥,fetch可以采用默认值,而不是错误输出:

def do_something(value)
  hash = { a: 'abc', b: 'bde' }

  get_value = hash.fetch(value, 'key not found')
end

在所有这些中,确保传入散列的确切键,在您的示例中,您的散列键是符号,因此您需要传入:

do_something(:a)

而不是

do_something('a')