Ruby - добавить конструктор в Fixnum и другие классы

В своем последнем вопросе я искал способ расширить возможности Ruby-переменных. Ответ на этот вопрос приводит меня к новому вопросу. По всей видимости, "исправление обезьян" решило большую часть этой проблемы, теперь я могу, по крайней мере, косвенно печатать с чем-то вроде (a = 3).nat где nat является методом "monkeypatched" в Fixnum, проверяя погоду "3" является допустимым значением. Это нормально для начала, но все же немного неуклюже и не интуитивно понятно. В конце концов мне действительно нужен способ переписать, расширить, перехватить или перегрузить конструктор для Fixnum, чтобы a = 3 напрямую вызывает метод nat,

Есть ли способ сделать это?

Меня интересует не только "правильный путь", он может быть немного "хакерским". Это только для моих исследований, это может быть опасным, неподдерживаемым способом.

1 ответ

В вашем примере конструктор не вызывается, то, что происходит, это то, что вы делаете a ссылка на буквальное 3 через использование оператора присваивания =,

То, что вы хотите, это перезаписать назначение, которое не возможно AFAIK.

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