swift中的类级别或结构级别方法,如Java中的静态方法?

时间:2014-06-08 15:41:45

标签: swift

有没有办法在swift中在类级别或结构级别添加方法?

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

摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l

现在,如果您想添加一个创建完整卡片组的方法,那么最好的方法是什么?

3 个答案:

答案 0 :(得分:88)

要在类中添加类型级方法,请在class声明之前添加func关键字:

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

要在struct或enum中添加类型级方法,请在static声明之前添加func关键字:

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

两者通常等同于Java中的静态方法或Objective-C中的类方法(用+声明),但关键字会根据您是在类,结构还是枚举中而更改。请参阅 Swift编程语言一书中的Type Methods

答案 1 :(得分:30)

在结构中:

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

通过:

调用
MyStruct.something()

在课堂上

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

来自:

MyClass.someMethod()

答案 2 :(得分:8)

p 353

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

摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l