Ruby 如何在该散列上生成与键对应的值,默认情况下为nil
我在Ruby中的哈希初学者练习中遇到了一些障碍。我有以下问题需要解决: 创建一个方法调用read_from_hash,它接受两个参数。第一个参数是散列,第二个是键。它们一起使用时,要么在该散列上生成一个与键对应的值,要么默认为nil。将这两个参数结合使用即可实现此目的 这是我的密码:Ruby 如何在该散列上生成与键对应的值,默认情况下为nil,ruby,Ruby,我在Ruby中的哈希初学者练习中遇到了一些障碍。我有以下问题需要解决: 创建一个方法调用read_from_hash,它接受两个参数。第一个参数是散列,第二个是键。它们一起使用时,要么在该散列上生成一个与键对应的值,要么默认为nil。将这两个参数结合使用即可实现此目的 这是我的密码: def read_from_hash(hash, key) hash = {key => "value"} hash(key) end 以下是错误: Failure/Error: expe
def read_from_hash(hash, key)
hash = {key => "value"}
hash(key)
end
以下是错误:
Failure/Error: expect(read_from_hash({name: 'Steve'}, :name)).to eq('Steve')
ArgumentError:
wrong number of arguments (given 1, expected 0)
你想要的只是:
def read_from_hash(hash, key)
hash[key]
end
h = {a: 1, b: 2}
read_from_hash(h, :a)
#=> 1
read_from_hash(h, :c)
#=> nil
或者举个例子:
read_from_hash({name: 'Steve'}, :name)
#=> 'Steve'
您当前的代码:
hash = {key => "value"}
创建一个新的hash
变量,覆盖通过参数传入的变量,此时:
hash(key)
您正试图使用常规括号而不是括号
[]
使用键键访问元素的值。因此,实际发生的情况是,您正在调用一个#hash
方法,并将键
变量作为参数传递给它。hash访问使用[]
,而不是()
,它试图调用一个方法。除了@DaveNewton的注释之外:该方法hash(…)
正在尝试调用is–一种可用于所有对象的方法。该方法不接受参数,因此出现了ArgumentError
。请阅读“,”hash(key)
#尝试访问元素的值…”-我认为如果说它尝试调用名为hash
的方法会更简洁。Ruby不知道你打算做什么。@Stefan编辑,我希望现在更清楚了。谢谢你的建议