Подтвердить что ты не робот

Метод уровня или уровня структуры в быстром, как статический метод в Java?

Есть ли способ добавить метод на уровне класса или уровня структуры в swift?

struct Card {
    var rank: Rank
    var suit: Suit
    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }
}

Отрывок из: Apple Inc. "Быстрый язык программирования". интерактивные книги. https://itun.es/us/jEUH0.l

Теперь, если вы хотите добавить метод, который создает полную колоду карт, что было бы лучшим способом его выполнить?

4b9b3361

Ответ 1

Чтобы добавить метод уровня в классе, добавьте ключевое слово class перед объявлением func:

class Dealer {
    func deal() -> Card { ... }
    class func sharedDealer() -> Dealer { ... }
}

Чтобы добавить метод уровня в структуре или перечислении, добавьте ключевое слово static перед объявлением func:

struct Card {
    // ...
    static func fullDeck() -> Card[] { ... }
}

Оба обычно эквивалентны статическим методам в Java или методах класса (объявлены с +) в Objective-C, но ключевое слово изменяется в зависимости от того, находитесь ли вы в классе или структуре или перечислении. См. Методы типов в книге языка Swift.

Ответ 2

В Struct:

struct MyStruct {
    static func something() {
        println("Something")
    }
}

Вызывается через:

MyStruct.something()

В классе

class MyClass {
    class func someMethod() {
        println("Some Method")
    }
}

вызванный через:

MyClass.someMethod()

Ответ 3

p 353

class SomeClass {
    class func someTypeMethod() {
        // type method implementation goes here
    }
}
SomeClass.someTypeMethod()

Отрывок из: Apple Inc. "Быстрый язык программирования". интерактивные книги. https://itun.es/us/jEUH0.l