Пытаюсь воссоздать case_class (как из Scala), но на Ruby. так что я пробовал
def case_class name
Object.const_set name, Class.new {}
end
но получаю: NameError: неинициализированная константа...
Я пытался найти, какой метод вызывает эту ошибку, но я не смог ее найти. напр. переопределение "const_missing" в Object
, но я продолжаю получать ту же ошибку
case_class('Demo')
он создает класс под названием Demo, и ошибок нет. Помните, что вам нужно будет сделать это перед использованием этого класса в любом коде или, возможно, загрузкой любых файлов, которые ссылаются на этот класс во время синтаксического анализа. - person tadman   schedule 07.04.2017Demo
является допустимой константой, что не так, пока этот метод не будет выполнен. Словить 22. - person tadman   schedule 07.04.2017Class.new
, то есть:Class.new { |klass| Object.const_set(name, klass) }
- person Stefan   schedule 07.04.2017Yeah but I'm trying not to call it that way. It need to work without parenthesis, just like "case_class Demo"
- ваш код работает без ошибок. - person Andrey Deineko   schedule 07.04.2017Module.const_missing
- person Stefan   schedule 07.04.2017