Метод уровня или уровня структуры в быстром, как статический метод в 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
Теперь, если вы хотите добавить метод, который создает полную колоду карт, что было бы лучшим способом его выполнить?
Ответы
Ответ 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