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

Jho*_*hee 44 swift

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

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

摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/us/jEUH0.l

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

ric*_*ter 88

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

class Dealer {
    func deal() -> Card { ... }
    class func sharedDealer() -> Dealer { ... }
}
Run Code Online (Sandbox Code Playgroud)

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

struct Card {
    // ...
    static func fullDeck() -> Card[] { ... }
}
Run Code Online (Sandbox Code Playgroud)

两者通常等同于Java中的静态方法或Objective-C中的类方法(用+声明),但关键字根据您是在类,结构还是枚举中而更改.见类方法的斯威夫特编程语言的书.


Log*_*gan 30

指导:

struct MyStruct {
    static func something() {
        println("Something")
    }
}
Run Code Online (Sandbox Code Playgroud)

叫来:

MyStruct.something()
Run Code Online (Sandbox Code Playgroud)

在班上

class MyClass {
    class func someMethod() {
        println("Some Method")
    }
}
Run Code Online (Sandbox Code Playgroud)

通过:

MyClass.someMethod()
Run Code Online (Sandbox Code Playgroud)

  • @IrshadQureshi - 有很多不同之处,我认为最重要的是结构是ValueType而类是ReferenceType (3认同)
  • @IrshadQureshi结构不能像类一样扩展 (2认同)

Gen*_*isa 8

第353页

class SomeClass {
    class func someTypeMethod() {
        // type method implementation goes here
    }
}
SomeClass.someTypeMethod()
Run Code Online (Sandbox Code Playgroud)

摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/us/jEUH0.l