Ruby: как сделать так, чтобы класс возвращал true?

Я новичок в ruby ​​и не знаю, как заставить test вернуть 'true'

class Hash
  def in(*)
  end
end

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

puts "test: #{test}"

Насколько я понимаю, в класс Hash вставлен метод, но я не знаю, как получить «значение» переданного аргумента, если это имеет смысл. В любом случае, я довольно потерян. Спасибо за помощь.

На самом деле вы бы решили это { a: 1 }.key?(:a). Как правило, избегайте повторного открытия (обезьяньего исправления) классов в ядре Ruby. Это позволяет избежать конфликтов между вашим кодом и кодом других людей, и есть много ловушек, поскольку эти классы фактически реализованы в C и не всегда ведут себя как настоящие классы Ruby. Есть лучшие способы учиться.

max 11.02.2023 11:21
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод in в классе Hash не был определен для возврата чего-либо.

Вам нужно определить метод in в хеш-классе:

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

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

puts "test: #{test}"

Другие вопросы по теме