NoMethodError:未定义的方法`除了'哈希

时间:2015-10-08 02:06:35

标签: ruby hash

在Ruby中使用Hash时除外,

None

我得到NoM​​ethodError:

point

我做错了什么?

4 个答案:

答案 0 :(得分:6)

except是一个Rails方法(确切地说是ActiveSupport)。在Rails控制台中执行时,您的代码不会重现该错误:

> d = {}
# => {} 
> d["a"]=1234
# => 1234 
> d["b"]=34 
# => 34 
> d["c"]=3 
# => 3 
> d.except(:b,:c)
# => {"a"=>1234, "b"=>34, "c"=>3} 

答案 1 :(得分:1)

没有Hash#except。您可以按如下方式实现它:

d.reject { |k, v| ["b", "c"].include? k }
# => {"a"=>1234}

请注意,它不是具有无差别访问权限的哈希; "b":b不同。

答案 2 :(得分:0)

正如他们上面所说,没有方法'除'意味着您没有在此代码中的任何位置定义'except'。如果您需要更新如何构建哈希,那么一个好的就是:http://www.tutorialspoint.com/ruby/ruby_hashes.htm

答案 3 :(得分:0)

Hash#except将在Ruby 3中使用

h = { a: 1, b: 2, c: 3 }
p h.except(:a) #=> {:b=>2, :c=>3}

https://www.ruby-lang.org/en/news/2020/09/25/ruby-3-0-0-preview1-released/