Я не создатель smalltalk, но, кажется, это лучший способ сделать.
Например, если вы выполните:
var := myInstance myMethod.
тогда вопрос: кем вы хотите, чтобы var
стал? Одним из вариантов будет nil
. Но это немного сбивает с толку, потому что вы работаете с определенными объектами, а nil
на самом деле не определено. Таким образом, вы можете рассматривать это так, как будто вы назначаете myInstance
var
и просто вызываете myMethod по пути. Также это, вероятно, можно рассматривать как сокращение для
var := myInstance myMethod; yourself.
Если смотреть изнутри, то из всех данных, доступных самому объекту, наверное, самое подходящее - тоже self
. Еще раз повторю, что nil
можно вернуть, но свое мнение по этому поводу я уже высказывал.
В Smalltalk нет такого понятия, как метод void, который ничего не возвращает, и нет проверки типов. Так что метод просто должен что-то возвращать. Как будто Объект говорит:
Я могу возвращать себя для любого вызова метода по умолчанию, потому что я всегда знаю о себе, и вы можете переопределить это поведение, если хотите, чтобы я возвращал что-то еще.
Лично я думаю, что возвращение nil
тоже может быть хорошим решением, и приложения Objective-C очень часто используют материал nil
, но Smalltalk устроен таким образом, и я думаю, что это неплохое решение.
person
Uko
schedule
27.12.2012