欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

Swift

當(dāng)前位置:主頁 > 軟件編程 > Swift >

Swift中static和class關(guān)鍵字的深入講解

來源:本站原創(chuàng)|時間:2020-01-11|欄目:Swift|點(diǎn)擊: 次

前言

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

static和class

作用:這兩個關(guān)鍵字都是用來說明被修飾的屬性或者方法是類型(class/struct/enum)的,而不是類型實例的。

static 適用的場景(class/struct/enum)

  • 修飾存儲屬性
  • 修飾計算屬性
  • 修飾類型方法
struct Point {
 let x: Double
 let y: Double
// 修飾存儲屬性
 static let zero = Point(x: 0, y: 0)
// 修飾計算屬性
 static var ones: [Point] {
  return [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)
 }
}

class 適用的場景

  • 修飾類方法
  • 修飾計算屬性
class MyClass {
// 修飾計算屬性
 class var age: Int {
  return 10
 }
// 修飾類方法
 class func testFunc() {
  
 }
}

注意事項

class不能修飾類的存儲屬性,static可以修飾類的存儲屬性

//class let name = "jack" error: Class stored properties not supported in classes; did you mean 'static'?

在protocol中使用static來修飾類型域上的方法或者計算屬性,因為struct、enum、class都支持static,而struct和enum不支持class

protocol MyProtocol {
 static func testFunc()
}

struct MyStruct: MyProtocol {
 static func testFunc() {
  
 }
}

enum MyEnum: MyProtocol {
 static func testFunc() {
  
 }
}

class MyClass: MyProtocol {
 static func testFunc() {
  
 }
}

static修飾的類方法不能繼承;class修飾的類方法可以繼承

class MyClass {
 class func testFunc() {
  
 }
 
 static func testFunc1() {
  
 }
}

class MySubClass: MyClass {
 override class func testFunc() {
  
 }
 
// error: Cannot override static method
// override static func testFunc1() {
//
// }
}

單例

class SingleClass {
 static let shared = SingleClass()
 private init() {}
}

總結(jié)

  • static能修飾class/struct/enum的計算屬性、存儲屬性、類型方法;class能修飾類的計算屬性和類方法
  • static修飾的類方法不能繼承;class修飾的類方法可以繼承
  • 在protocol中要使用static

參考

  • Swift Tips
  • stackoverflow

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對我們的支持。

上一篇:在Swift中如何使用正則表達(dá)式詳解

欄    目:Swift

下一篇:深入講解Swift中的模式匹配

本文標(biāo)題:Swift中static和class關(guān)鍵字的深入講解

本文地址:http://mengdiqiu.com.cn/a1/Swift/11933.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有