Swift: stati c init () - PullRequest
       14

Swift: stati c init ()

0 голосов
/ 29 февраля 2020

Недавно я наткнулся на код, который выглядел так:

public class Foo {
    public static init(_ bar : Int) -> Int { ... }
}

Правильно ли я предположил, что это просто произвольная функция, которую, однако, можно назвать Foo(42)? Результат такого вызова все равно будет Int и не приведет к созданию объекта Foo вообще.

1 Ответ

1 голос
/ 29 февраля 2020

init in Swift зарезервирован для создания инициализатора определенного типа.

Вместо этого можно попробовать создать subscript с модификатором static, если это решает вашу цель.

public class Foo {
    static subscript(_ bar: Int) -> Int {
        return bar + 10
    }
}

Вы можете использовать его, например,

let value = Foo[1] //11

Приведенный выше код не создаст экземпляр типа Foo .

...