日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift - static和class的使用

發布時間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift - static和class的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

Swift中表示 “類型范圍作用域” 這一概念有兩個不同的關鍵字,它們分別是static和class。這兩個關鍵字確實都表達了這個意思,但是在其他一些語言,包括Objective-C中,我們并不會特別地區分類變量/類方法和靜態變量/靜態函數。但是在Swift中,這兩個關鍵字卻是不能用混的。

static關鍵字

在非class的類型上下文中,我們統一使用static來描述類型作用域。這包括在enum和struct中表述類型方法和類型屬性時。在這兩個值類型中,我們可以在類型范圍內聲明并使用存儲屬性,計算屬性和方法。static適用的場景有這些

struct Point {let x: Doublelet y: Double// 存儲屬性static let zero = Point(x: 0, y: 0)// 計算屬性static var ones: [Point] {return [Point(x: 1, y: 1),Point(x: -1, y: 1),Point(x: 1, y: -1),Point(x: -1, y: -1)]}// 類型方法static func add(p1: Point, p2: Point) -> Point {return Point(x: p1.x + p2.x, y: p1.y + p2.y)} }

enum的情況與這個十分類似,就不再列舉了

?

class關鍵字

class關鍵字相比起來就明白許多,是專門用在class類型的上下文中的,可以用來修飾類方法以及類的計算屬性。要特別注意class中現在是不能出現存儲類屬性的,我們如果寫類似這樣的代碼的話:

class MyClass {class var bar: Bar? }

編譯時會得到一個錯誤:

class variables not yet supported

這主要是因為在Objective-C中就沒有類變量這個概念,為了運行時的統一和兼容,暫時不太方便添加這個特性。Apple表示今后將會考慮在某個升級版本中實裝class類型的類存儲變量,現在的話,我們只能在class中用class關鍵字聲明方法和計算屬性。

?

static和class總結

類可以使用關鍵字static class 修飾方法,但是結構體、枚舉只能使用關鍵字static修飾 // 定義類 class StudentC{static var des:String = "學生的類"var name:String!func getName()->String{return name}class func describe()->String{return des}static func getClassDescribe()->String{return des} }// 定義結構體 struct StudentS{static var des:String = "學生的結構體"var name:Stringstatic func describe()->String{return "這是一個定義學生的類"} }

?

有一個比較特殊的是protocol。在Swift中class、struct和enum都是可以實現protocol的。那么如果我們想在protocol里定義一個類型域上的方法或者計算屬性的話,應該用哪個關鍵字呢?答案是使用class進行定義,但是在實現時還是按照上面的規則:在class里使用class關鍵字,而在struct或enum中仍然使用static——雖然在protocol中定義時使用的是class:

protocol MyProtocol {class func foo() -> String } struct MyStruct: MyProtocol {static func foo() -> String {return "MyStruct"} } enum MyEnum: MyProtocol {static func foo() -> String {return "MyEnum"} } class MyClass: MyProtocol {class func foo() -> String {return "MyClass"} }

?

轉載于:https://www.cnblogs.com/junhuawang/p/6247991.html

總結

以上是生活随笔為你收集整理的Swift - static和class的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。