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