Как заменить существующие операторы, не вызывая их в Ио?

Я пытаюсь выполнить второе упражнение во второй день IO в книге «Семь языков за семь дней». В нем вы спросили: «Как бы вы изменили / чтобы вернуть 0, если знаменатель равен нулю?» Я решил, что могу добавить метод в Number, используя:

Number new_div := method(i, if(i != 0, self / i, 0))

Я не уверен, как заменить "/" в таблице операторов. Я пробовал:

Number / := Number new_div
Number / := self new_div

Но я получаю исключение для обоих, поскольку он пытается вызвать "/". Как мне получить дескриптор Number /, чтобы я мог сохранить ссылку на старый метод, а затем переопределить его для своих целей? Я ошибаюсь в этом?

31
задан draegtun 23 November 2010 в 23:59
поделиться