Ruby:如何使类返回为真?

Ruby: how to make class return true?

提问人:James Nine 提问时间:2/11/2023 最后编辑:James Nine 更新时间:2/12/2023 访问量:70

问:

我是一个 ruby 初学者,我不确定如何使返回“真实”test

class Hash
  def in(*)
  end
end

# cannot alter below this line
def test
  { a: 1 }.in(:a) == 1
end

puts "test: #{test}"

根据我的理解,该类插入了一个方法,但我不知道如何获取传递参数的“值”,如果这有任何意义的话。无论哪种方式,我都很迷茫。感谢您的帮助。Hash

Ruby 方法 Hash

评论

2赞 max 2/11/2023
你实际解决这个问题的方法是.通常,避免在 Ruby 核心中重新打开(猴子修补)类。这既避免了你的代码和其他人的代码之间的冲突,而且有很多陷阱,因为这些类实际上是用 C 语言实现的,并不总是像实际的 Ruby 类那样运行。有更好的学习方法。{ a: 1 }.key?(:a)

答:

2赞 Alon Alush 2/11/2023 #1

Hash 类中的 in 方法未定义为返回任何内容。

您需要在哈希类中定义 in 方法:

class Hash
  def in(key)
    self[key]
  end
end

def test
  { a: 1 }.in(:a) == 1
end

puts "test: #{test}"