self
как ссылка на экземпляр недоступна для static
функций, поэтому ответ на ваш вопрос "нет", насколько это возможно.Тем не менее, в контексте экономии некоторого набора текста и использования метода экземпляра triggerSomething()
, где доступен self
, вы можете выполнить то, что вы хотите сделать.
Этот ответ предназначен исключительно дляради как вы могли бы сделать это.Я должен сказать, что, честно говоря, думаю, что в этом нет особой полезности, и если вам понадобится такой шаблон, вам, вероятно, будет лучше потратить больше времени на свой дизайн.Но в любом случае, вот как это может выглядеть.
Обратите внимание, что я возвращаю Int
, где у вас есть Bar
в вашем вопросе для простоты.
protocol Processable { }
class Foo: Processable {
static func processSomething(forOwner owner: Processable) -> Int {
return 1
}
func triggerSomething(forOwner owner: Processable? = nil) -> Int {
return Foo.processSomething(forOwner: owner ?? self)
}
}