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

詳解Swift 結(jié)構(gòu)體

 更新時間:2020年09月04日 11:53:43   作者:菜鳥教程  
這篇文章主要介紹了Swift 結(jié)構(gòu)體的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

Swift 結(jié)構(gòu)體是構(gòu)建代碼所用的一種通用且靈活的構(gòu)造體。

我們可以為結(jié)構(gòu)體定義屬性(常量、變量)和添加方法,從而擴(kuò)展結(jié)構(gòu)體的功能。

與 C 和 Objective C 不同的是:

  • 結(jié)構(gòu)體不需要包含實現(xiàn)文件和接口。
  • 結(jié)構(gòu)體允許我們創(chuàng)建一個單一文件,且系統(tǒng)會自動生成面向其它代碼的外部接口。

結(jié)構(gòu)體總是通過被復(fù)制的方式在代碼中傳遞,因此它的值是不可修改的。

語法

我們通過關(guān)鍵字 struct 來定義結(jié)構(gòu)體:

struct nameStruct { 
  Definition 1
  Definition 2
  ……
  Definition N
}

實例

我們定義一個名為 MarkStruct 的結(jié)構(gòu)體 ,結(jié)構(gòu)體的屬性為學(xué)生三個科目的分?jǐn)?shù),數(shù)據(jù)類型為 Int:

struct MarkStruct{
  var mark1: Int
  var mark2: Int
  var mark3: Int
}

我們可以通過結(jié)構(gòu)體名來訪問結(jié)構(gòu)體成員。

結(jié)構(gòu)體實例化使用 let 關(guān)鍵字:

import Cocoa

struct studentMarks {
  var mark1 = 100
  var mark2 = 78
  var mark3 = 98
}
let marks = studentMarks()
print("Mark1 是 \(marks.mark1)")
print("Mark2 是 \(marks.mark2)")
print("Mark3 是 \(marks.mark3)")

以上程序執(zhí)行輸出結(jié)果為:

Mark1 是 100
Mark2 是 78
Mark3 是 98

實例中,我們通過結(jié)構(gòu)體名 'studentMarks' 訪問學(xué)生的成績。結(jié)構(gòu)體成員初始化為mark1, mark2, mark3,數(shù)據(jù)類型為整型。

然后我們通過使用 let 關(guān)鍵字將結(jié)構(gòu)體 studentMarks() 實例化并傳遞給 marks。

最后我們就通過 . 號來訪問結(jié)構(gòu)體成員的值。

以下實例化通過結(jié)構(gòu)體實例化時傳值并克隆一個結(jié)構(gòu)體:

import Cocoa

struct MarksStruct {
  var mark: Int

  init(mark: Int) {
   self.mark = mark
  }
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的結(jié)構(gòu)體!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97

以上程序執(zhí)行輸出結(jié)果為:

98
97

結(jié)構(gòu)體應(yīng)用

在你的代碼中,你可以使用結(jié)構(gòu)體來定義你的自定義數(shù)據(jù)類型。

結(jié)構(gòu)體實例總是通過值傳遞來定義你的自定義數(shù)據(jù)類型。

按照通用的準(zhǔn)則,當(dāng)符合一條或多條以下條件時,請考慮構(gòu)建結(jié)構(gòu)體:

  • 結(jié)構(gòu)體的主要目的是用來封裝少量相關(guān)簡單數(shù)據(jù)值。
  • 有理由預(yù)計一個結(jié)構(gòu)體實例在賦值或傳遞時,封裝的數(shù)據(jù)將會被拷貝而不是被引用。
  • 任何在結(jié)構(gòu)體中儲存的值類型屬性,也將會被拷貝,而不是被引用。
  • 結(jié)構(gòu)體不需要去繼承另一個已存在類型的屬性或者行為。

舉例來說,以下情境中適合使用結(jié)構(gòu)體:

  • 幾何形狀的大小,封裝一個width屬性和height屬性,兩者均為Double類型。
  • 一定范圍內(nèi)的路徑,封裝一個start屬性和length屬性,兩者均為Int類型。
  • 三維坐標(biāo)系內(nèi)一點,封裝x,y和z屬性,三者均為Double類型。

結(jié)構(gòu)體實例是通過值傳遞而不是通過引用傳遞。

import Cocoa

struct markStruct{
  var mark1: Int
  var mark2: Int
  var mark3: Int
  
  init(mark1: Int, mark2: Int, mark3: Int){
    self.mark1 = mark1
    self.mark2 = mark2
    self.mark3 = mark3
  }
}

print("優(yōu)異成績:")
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)

print("糟糕成績:")
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
print(fail.mark1)
print(fail.mark2)
print(fail.mark3)

以上程序執(zhí)行輸出結(jié)果為:

優(yōu)異成績:
98
96
100
糟糕成績:
34
42
13

以上實例中我們定義了結(jié)構(gòu)體 markStruct,三個成員屬性:mark1, mark2 和 mark3。結(jié)構(gòu)體內(nèi)使用成員屬性使用 self 關(guān)鍵字。

從實例中我們可以很好的理解到結(jié)構(gòu)體實例是通過值傳遞的。

以上就是詳解Swift 結(jié)構(gòu)體的詳細(xì)內(nèi)容,更多關(guān)于Swift 結(jié)構(gòu)體的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Swift版使用ThPullRefresh實現(xiàn)下拉上拉刷新數(shù)據(jù)

    Swift版使用ThPullRefresh實現(xiàn)下拉上拉刷新數(shù)據(jù)

    這篇文章主要介紹了Swift版使用ThPullRefresh實現(xiàn)下拉上拉刷新數(shù)據(jù),需要的朋友可以參考下
    2016-01-01
  • Swift心得筆記之控制流

    Swift心得筆記之控制流

    控制流(Control Flow)我不想這么譯的。。。我更想叫控制語句,但是想想,這么叫也沒錯,意指流程控制。大部分用法跟C類似。
    2015-04-04
  • Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的方法

    Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的方法

    這篇文章主要給大家介紹了關(guān)于Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Swift簡單快速的動態(tài)更換app圖標(biāo)AppIcon方法示例

    Swift簡單快速的動態(tài)更換app圖標(biāo)AppIcon方法示例

    這篇文章主要為大家介紹了Swift動態(tài)更換app圖標(biāo)AppIcon的簡單快速方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 如何利用SwiftUI實現(xiàn)可縮放的圖片預(yù)覽器

    如何利用SwiftUI實現(xiàn)可縮放的圖片預(yù)覽器

    這篇文章主要給大家介紹了關(guān)于如何利用SwiftUI實現(xiàn)可縮放圖片預(yù)覽器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SwiftUI具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • Swift?Error的處理方法說明

    Swift?Error的處理方法說明

    wift?是一個類型嚴(yán)格的語言,在很多情況下各種不匹配或者強制解包出錯都會導(dǎo)致系統(tǒng)崩潰。所以我們需要進(jìn)行異常處理,在swift中也叫錯誤處理Error
    2022-08-08
  • Swift編程中的switch...case語句實例解析

    Swift編程中的switch...case語句實例解析

    這篇文章主要介紹了Swift編程中的switch...case語句實例解析,其中重點還是對于fallthrough關(guān)鍵字用法的講解,需要的朋友可以參考下
    2016-04-04
  • Swift?Error重構(gòu)優(yōu)化詳解

    Swift?Error重構(gòu)優(yōu)化詳解

    這篇文章主要為大家介紹了Swift?Error的問題解決及重構(gòu)優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn)

    淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn)

    這篇文章主要介紹了淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn),是作者根據(jù)C語言的指針特性在Swifft中做出的一個實驗,需要的朋友可以參考下
    2015-07-07
  • Swift泛型Generics淺析講解

    Swift泛型Generics淺析講解

    泛型代碼讓你能根據(jù)你所定義的要求,寫出可以用于任何類型的靈活的、可復(fù)用的函數(shù)。泛型是 Swift 最強大的特性之一,很多 Swift 標(biāo)準(zhǔn)庫是基于泛型代碼構(gòu)建的
    2022-08-08

最新評論

边坝县| 忻城县| 惠来县| 衡水市| 千阳县| 辽阳市| 安国市| 平度市| 中卫市| 林甸县| 灌云县| 涡阳县| 股票| 兴和县| 五华县| 什邡市| 昌图县| 英吉沙县| 涟源市| 屏边| 安康市| 苏尼特左旗| 张北县| 石景山区| 蓝田县| 乌兰察布市| 和田县| 汾阳市| 波密县| 苍溪县| 石林| 开阳县| 霍州市| 长沙县| 仁化县| 康马县| 东阿县| 邯郸县| 华池县| 南岸区| 浮梁县|