Вызов статического метода без повторения имени класса - PullRequest
0 голосов
/ 19 сентября 2018

Возможно ли в Swift вызвать метод / атрибут static (или class) без записи имени класса (из метода экземпляра)?

class Foo {
  class func someValue() -> Int {
    return 1337
  }

  func printValue() {
    print(Foo.someValue())
    print(type(of: self).someValue())

    print(Self.someValue()) // error: use of unresolved identifier 'Self'
  }
}

Пока что яя нашел обходной путь с протоколом / typealias:

protocol _Static {
  typealias Static = Self
}


class Foo: _Static {
  class func someValue() -> Int {
    return 1337
  }

  func printValue() {
    print(Static.someValue()) // 1337
  }
}

, но мне было интересно, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 21 июня 2019

В Swift 5.1 этот код больше не выдает ошибку.

class Foo {
  class func someValue() -> Int {
    return 1337
  }

  func printValue() {
    print(Foo.someValue())
    print(type(of: self).someValue())

    print(Self.someValue()) // ok
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...