欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年09月04日 11:53:43   作者:菜鳥(niǎo)教程  
這篇文章主要介紹了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)體不需要包含實(shí)現(xiàn)文件和接口。
  • 結(jié)構(gòu)體允許我們創(chuàng)建一個(gè)單一文件,且系統(tǒng)會(huì)自動(dòng)生成面向其它代碼的外部接口。

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

語(yǔ)法

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

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

實(shí)例

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

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

我們可以通過(guò)結(jié)構(gòu)體名來(lái)訪問(wèn)結(jié)構(gòu)體成員。

結(jié)構(gòu)體實(shí)例化使用 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

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

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

最后我們就通過(guò) . 號(hào)來(lái)訪問(wèn)結(jié)構(gòu)體成員的值。

以下實(shí)例化通過(guò)結(jié)構(gòu)體實(shí)例化時(shí)傳值并克隆一個(gè)結(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)體來(lái)定義你的自定義數(shù)據(jù)類型。

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

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

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

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

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

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

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)異成績(jī):")
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)

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

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

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

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

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

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

相關(guān)文章

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

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

    這篇文章主要為大家介紹了Swift?Error的問(wèn)題解決及重構(gòu)優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift算法之二叉樹(shù)實(shí)現(xiàn)的方法示例

    Swift算法之二叉樹(shù)實(shí)現(xiàn)的方法示例

    二叉樹(shù)是計(jì)算機(jī)科學(xué)中最基本也是最重要的樹(shù)型結(jié)構(gòu),最常見(jiàn)的二叉樹(shù)生成算法通常是使用遞歸或者其他描述類語(yǔ)言的方法來(lái)實(shí)現(xiàn)。本文主要介紹了Swift算法之二叉樹(shù)實(shí)現(xiàn)的方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • Swift編程中的初始化與反初始化完全講解

    Swift編程中的初始化與反初始化完全講解

    這篇文章主要介紹了Swift編程中的初始化與反初始化完全講解,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • SwiftUI中TabView組件的常規(guī)使用

    SwiftUI中TabView組件的常規(guī)使用

    這篇文章主要給大家介紹了關(guān)于SwiftUI中TabView組件的常規(guī)使用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用SwiftUI具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-06-06
  • iOS開(kāi)發(fā)中Swift 指紋驗(yàn)證功能模塊實(shí)例代碼

    iOS開(kāi)發(fā)中Swift 指紋驗(yàn)證功能模塊實(shí)例代碼

    本文給大家分享ios調(diào)用touchid代碼塊,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下把
    2017-03-03
  • 在 Swift 中測(cè)試 UIAlertController的方法

    在 Swift 中測(cè)試 UIAlertController的方法

    這篇文章主要介紹了在 Swift 中測(cè)試 UIAlertController的方法的,需要的朋友可以參考下
    2015-10-10
  • Swift實(shí)現(xiàn)Selection Sort選擇排序算法的實(shí)例講解

    Swift實(shí)現(xiàn)Selection Sort選擇排序算法的實(shí)例講解

    選擇排序是一種穩(wěn)定的排序算法,且實(shí)現(xiàn)代碼通常比冒泡排序要來(lái)的簡(jiǎn)單,這里我們就來(lái)看一下Swift實(shí)現(xiàn)Selection Sort選擇排序的實(shí)例講解
    2016-07-07
  • 詳解Swift中enum枚舉類型的用法

    詳解Swift中enum枚舉類型的用法

    Swift中通過(guò)enum關(guān)鍵字可以直接創(chuàng)建出枚舉對(duì)象,而且可以使用switch和case語(yǔ)句來(lái)進(jìn)行流程控制,十分強(qiáng)大和靈活,這里我們就來(lái)詳解Swift中enum枚舉類型的用法
    2016-06-06
  • Swift解決UITableView空數(shù)據(jù)視圖問(wèn)題的簡(jiǎn)單方法

    Swift解決UITableView空數(shù)據(jù)視圖問(wèn)題的簡(jiǎn)單方法

    這篇文章主要給大家介紹了關(guān)于Swift解決UITableView空數(shù)據(jù)視圖問(wèn)題的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2018-10-10
  • Swift如何為網(wǎng)頁(yè)承載頁(yè)面添加更多功能詳解

    Swift如何為網(wǎng)頁(yè)承載頁(yè)面添加更多功能詳解

    這篇文章主要給大家介紹了關(guān)于Swift如何為網(wǎng)頁(yè)承載頁(yè)面添加更多功能的相關(guān)資料,包括添加菊花加載的效果、添加跳轉(zhuǎn)到Safari的功能、添加復(fù)制鏈接的功能以及添加分享網(wǎng)頁(yè)的功能,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05

最新評(píng)論