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

class level or struct level method in swift like static method in Java?

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

1
2
3
4
5
6
7
struct Card {
    var rank: Rank
    var suit: Suit
    func simpleDescription() -> String {
        return"The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }
}

摘自:苹果公司。"Swift编程语言。"iBooks。网址:https://itun.es/us/jeuh0.l

现在,如果你想添加一种方法来创建一副完整的卡片,那么最好的方法是什么呢?


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

1
2
3
4
class Dealer {
    func deal() -> Card { ... }
    class func sharedDealer() -> Dealer { ... }
}

要在结构或枚举中添加类型级方法,请在func声明之前添加static关键字:

1
2
3
4
struct Card {
    // ...
    static func fullDeck() -> Card[] { ... }
}

这两种方法都相当于Java中的静态方法或类方法(在+中用+声明),但关键字的变化取决于您是否在类、结构或枚举中。参见Swift编程语言手册中的类型方法。


在Struct:

1
2
3
4
5
struct MyStruct {
    static func something() {
        println("Something")
    }
}

调用通过:

1
MyStruct.something()

课堂上

1
2
3
4
5
class MyClass {
    class func someMethod() {
        println("Some Method")
    }
}

调用通过:

1
MyClass.someMethod()


P 353

1
2
3
4
5
6
class SomeClass {
    class func someTypeMethod() {
        // type method implementation goes here
    }
}
SomeClass.someTypeMethod()

摘自:苹果公司。"Swift编程语言。"iBooks。网址:https://itun.es/us/jeuh0.l