Swift, похоже, разделяет с python одну характеристику c требования class
ссылки на экземпляр для доступа к членам - даже внутри самого класса. По умолчанию для обоих языков установлено self
. В частности,
self.someClassMethod()
Это идентично между python
и swift
. Мне также не нравится, что это требование навязчиво: оно привлекает мое внимание к self
и к тому, какой метод действительно вызывается. В python
я уменьшаю (хотя не удаляю ) раздражение, используя вместо него s
:
def someInstanceMethod(s, param1, param2)
вместо стандартного
def someInstanceMethod(self, param1, param2)
Затем внутри метода я могу получить доступ к другим методам экземпляра:
s.someOtherInstanceMethod()
Я не собираюсь сражаться по этому поводу: PEP
люди будут прыгать из-за этого - но для меня это более читается и другие в моей команде. Есть ли такой способ сделать ярлык в swift
? Заметил typealias
и пробовал использовать:
fileprivate let tp = U.tprint // Any non-critical logging statements will happen with this
Но тогда надо сделать так:
self.tp("Loaded synthesizer settings")
Без ссылки на self
возникает следующая ошибка:
(162, 25) reference to property 'tp' in closure requires explicit 'self.' to make capture semantics explicit
Я бы предпочел только
tp("Loaded synthesizer settings")
, но это, очевидно, невозможно. Можем ли мы получить ближе к этому - по строкам s.<method>
вместо self.<method>
?