最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年03月11日 08:59:56   作者:godiscoder  
這篇文章主要給大家介紹了關(guān)于Swift中static和class關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

static和class

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

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

  • 修飾存儲屬性
  • 修飾計(jì)算屬性
  • 修飾類型方法
struct Point {
 let x: Double
 let y: Double
// 修飾存儲屬性
 static let zero = Point(x: 0, y: 0)
// 修飾計(jì)算屬性
 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 適用的場景

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

注意事項(xiàng)

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

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

在protocol中使用static來修飾類型域上的方法或者計(jì)算屬性,因?yàn)閟truct、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的計(jì)算屬性、存儲屬性、類型方法;class能修飾類的計(jì)算屬性和類方法
  • static修飾的類方法不能繼承;class修飾的類方法可以繼承
  • 在protocol中要使用static

參考

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

相關(guān)文章

  • Swift高階函數(shù)contains?allSatisfy?reversed?lexicographicallyPrecedes用法示例

    Swift高階函數(shù)contains?allSatisfy?reversed?lexicographicallyPr

    這篇文章主要為大家介紹了Swift高階函數(shù)contains?allSatisfy?reversed?lexicographicallyPrecedes用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • swift中defer幾個(gè)簡單的使用場景詳解

    swift中defer幾個(gè)簡單的使用場景詳解

    在Swift 2.0中,Apple提供了defer關(guān)鍵字,讓我們可以實(shí)現(xiàn)同樣的效果,這篇文章主要介紹了關(guān)于swift中defer幾個(gè)簡單的使用場景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用defer具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧。
    2018-03-03
  • Swift之運(yùn)算符重載示例詳解

    Swift之運(yùn)算符重載示例詳解

    這篇文章主要為大家介紹了Swift之運(yùn)算符重載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Swift開發(fā)應(yīng)用中如何更方便地使用顏色詳解

    Swift開發(fā)應(yīng)用中如何更方便地使用顏色詳解

    這篇文章主要給大家介紹了關(guān)于Swift開發(fā)應(yīng)用中如何更方便地使用顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Swift中常量和變量的區(qū)別與聲明詳解

    Swift中常量和變量的區(qū)別與聲明詳解

    Swift語言同樣和Java和OC等語言一樣是同樣是需要聲明常量和變量的,下面就讓我們來學(xué)習(xí)一下Swift的常量和變量。這篇文章主要給大家介紹了關(guān)于Swift中常量和變量的區(qū)別與聲明的相關(guān)資料,需要的朋友可以參考下。
    2017-11-11
  • 利用Swift實(shí)現(xiàn)各類的CATransition動(dòng)畫詳解

    利用Swift實(shí)現(xiàn)各類的CATransition動(dòng)畫詳解

    CATransition動(dòng)畫主要在過渡時(shí)使用,比如兩個(gè)頁面層級改變的時(shí)候添加一個(gè)轉(zhuǎn)場效果。CATransition分為兩類,一類是公開的動(dòng)畫效果,一類是非公開的動(dòng)畫效果。這篇文章主要給大家介紹了關(guān)于如何利用Swift實(shí)現(xiàn)各類CATransition動(dòng)畫的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • Swift實(shí)現(xiàn)文件壓縮和解壓示例代碼

    Swift實(shí)現(xiàn)文件壓縮和解壓示例代碼

    本篇文章主要介紹了Swift實(shí)現(xiàn)文件壓縮和解壓示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Swift?列舉內(nèi)存管理與異常處理具體代碼

    Swift?列舉內(nèi)存管理與異常處理具體代碼

    內(nèi)存管理和異常處理在任何編程語言中都是核心概念。盡管有很多教程解釋了Swift自動(dòng)引用計(jì)數(shù)的基本原理,但我發(fā)現(xiàn)沒有一個(gè)可以從編譯器的角度對其進(jìn)行解釋。在本文中,我們將通過詳細(xì)代碼列舉學(xué)習(xí)Swift內(nèi)存管理與異常處理
    2021-11-11
  • 淺談swift 4.0中private所發(fā)生的變化

    淺談swift 4.0中private所發(fā)生的變化

    Swift 4是蘋果計(jì)劃于2017年秋季推出的最新版本,其主要重點(diǎn)是提供與Swift 3代碼的源兼容性,并努力實(shí)現(xiàn)ABI穩(wěn)定性。下面這篇文章主要給大家介紹了關(guān)于swift 4.0中private所發(fā)生的一些變化,需要的朋友可以參考下。
    2017-12-12
  • Swift讓輸入框跟隨鍵盤彈起避免輸入輸入法擋住輸入框問題

    Swift讓輸入框跟隨鍵盤彈起避免輸入輸入法擋住輸入框問題

    這篇文章主要介紹了Swift讓輸入框跟隨鍵盤彈起避免輸入輸入法擋住輸入框問題的完美解決方案,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2016-11-11

最新評論

巴塘县| 南宁市| 溆浦县| 麻阳| 桂平市| 昭平县| 彝良县| 太康县| 新乡县| 孟津县| 太保市| 郁南县| 建平县| 莆田市| 琼中| 石渠县| 固阳县| 柞水县| 大厂| 嵊州市| 桐柏县| 平南县| 英德市| 宁阳县| 盘山县| 格尔木市| 民乐县| 富平县| 克东县| 桐乡市| 绥化市| 商河县| 东平县| 蓝田县| 南部县| 涡阳县| 平陆县| 永宁县| 丹江口市| 长兴县| 东莞市|