Прежде всего, что-то не так с вашими источниками. Метод Integer >> / на самом деле выглядит так:
/ aNumber
"Refer to the comment in Number / "
| quoRem |
aNumber isInteger ifTrue:
[quoRem := self digitDiv: aNumber abs "*****I've added abs here*****"
neg: self negative ~~ aNumber negative.
(quoRem at: 2) = 0
ifTrue: [^ (quoRem at: 1) normalize]
ifFalse: [^ (Fraction numerator: self denominator: aNumber) reduced]].
^ aNumber adaptToInteger: self andSend: #/
Во-вторых, этот код используется только для больших целых чисел. Если вы оцениваете 4 / 3
, этот метод не используется, а скорее SmallInteger >> / , который напрямую создает дробь.
Чтобы вызвать нужный метод, вам нужно использовать большое число, например ::
12345678901234567890 / 2
Выберите это выражение и выберите «отладить его» в контекстном меню. В качестве альтернативы вы можете использовать сообщение «halt» для вызова отладчика:
12345678901234567890 halt / 2
Когда появится отладчик, нажмите кнопку «Into», чтобы перейти к методу.