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

詳解Swift語言中的類與結(jié)構(gòu)體

 更新時(shí)間:2015年11月04日 17:18:01   投稿:goldensun  
這篇文章主要介紹了Swift語言中的類與結(jié)構(gòu)體,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下


在 Swift 中類是建立靈活的構(gòu)建塊。類似于常量,變量和函數(shù),用戶可以定義的類的屬性和方法。Swift給我們提供了聲明類,而無需用戶創(chuàng)建接口和實(shí)現(xiàn)文件的功能。Swift 允許我們創(chuàng)建類作為單個(gè)文件和外部接口,將默認(rèn)在類一次初始化來創(chuàng)建。

使用類的好處:

  • 繼承獲得一個(gè)類的屬性到其他類
  • 類型轉(zhuǎn)換使用戶能夠在運(yùn)行時(shí)檢查類的類型
  • 初始化器需要處理釋放內(nèi)存資源
  • 引用計(jì)數(shù)允許類實(shí)例有一個(gè)以上的參考

類和結(jié)構(gòu)的共同特征:

  • 屬性被定義為存儲(chǔ)值
  • 下標(biāo)被定義為提供訪問值
  • 方法被初始化來改善功能
  • 初始狀態(tài)是由初始化函數(shù)定義
  • 功能被擴(kuò)大,超出默認(rèn)值
  • 確認(rèn)協(xié)議功能標(biāo)準(zhǔn)

語法

復(fù)制代碼 代碼如下:

Class classname {
   Definition 1
   Definition 2
    ---
   Definition N
}

定義類
復(fù)制代碼 代碼如下:

class student{
   var studname: String
   var mark: Int
   var mark2: Int
}

創(chuàng)建一個(gè)實(shí)例的語法:
復(fù)制代碼 代碼如下:

let studrecord = student()
示例
class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark = 300
}
let marks = studentMarks()
println("Mark is \(marks.mark)")


當(dāng)我們使用 playground 運(yùn)行上面的程序,我們得到以下結(jié)果

Mark is 300

訪問類屬性作為引用類型
類屬性可使用 '.' 語法來訪問。屬性名稱由 "." 分離在實(shí)例名后。

復(fù)制代碼 代碼如下:

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark1 = 300
   var mark2 = 400
   var mark3 = 900
}
let marks = studentMarks()
println("Mark1 is \(marks.mark1)")
println("Mark2 is \(marks.mark2)")
println("Mark3 is \(marks.mark3)")


當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果

Mark1 is 300
Mark2 is 400
Mark3 is 900

類標(biāo)識(shí)符
在 Swift 引用多個(gè)常量和變量指向的單個(gè)實(shí)例。要了解常量和變量指向一個(gè)特定的類實(shí)例標(biāo)識(shí)操作符的使用。 類實(shí)例總是通過引用傳遞。在類NSString,NSArray 和 NSDictionary 實(shí)例始終分配作為參考傳遞到現(xiàn)有的實(shí)例,而不是使用一個(gè)副本。

2015114171530231.png (639×119)

復(fù)制代碼 代碼如下:

class SampleClass: Equatable {
   let myProperty: String
   init(s: String) {
      myProperty = s
   }
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
   return lhs.myProperty == rhs.myProperty
}

let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")

spClass1 === spClass2 // false
println("\(spClass1)")

spClass1 !== spClass2 // true
println("\(spClass2)")


當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果

main.SampleClass
main.SampleClass

結(jié)構(gòu)體
Swift 提供了利用構(gòu)造作為結(jié)構(gòu)的靈活的構(gòu)建塊。 通過利用這些結(jié)構(gòu)的一次可以定義構(gòu)建體的方法和屬性。

這不同于 C 和 Objective C 編程:

結(jié)構(gòu)不用要求實(shí)現(xiàn)文件和接口。

結(jié)構(gòu)體使我們能夠創(chuàng)建一個(gè)文件并自動(dòng)擴(kuò)展其接口到其它塊。

在結(jié)構(gòu)體中的變量值被復(fù)制并傳遞在后續(xù)的代碼,通過返回的舊值的副本使得這些值不能被改變。

語法

復(fù)制代碼 代碼如下:

Structures are defined with a 'Struct' Keyword.
struct nameStruct {
   Definition 1
   Definition 2
    ---
   Definition N
}

結(jié)構(gòu)體的定義
考慮例如,假設(shè)要訪問包含三個(gè)科目記錄標(biāo)記的學(xué)生并找出三個(gè)科目的總和。在這里,markStruct用于初始化的結(jié)構(gòu)有三個(gè)標(biāo)記,數(shù)據(jù)類型為 'Int'。
復(fù)制代碼 代碼如下:

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

訪問結(jié)構(gòu)體及屬性
結(jié)構(gòu)的成員是由它的結(jié)構(gòu)名訪問。 結(jié)構(gòu)體的實(shí)例中由 'let' 關(guān)鍵字進(jìn)行初始化。
復(fù)制代碼 代碼如下:

struct studentMarks {
   var mark1 = 100
   var mark2 = 200
   var mark3 = 300
}
let marks = studentMarks()
println("Mark1 is \(marks.mark1)")
println("Mark2 is \(marks.mark2)")
println("Mark3 is \(marks.mark3)")

當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果:

Mark1 is 100
Mark2 is 200
Mark3 is 300

學(xué)生成績(jī)需要訪問結(jié)構(gòu)名“studentMarks”。結(jié)構(gòu)成員被初始化為 mark1, mark2, mark3 的整數(shù)類型值。然后,結(jié)構(gòu)體 studentMarks()傳遞給 'marks' 使用 'let' 關(guān)鍵字。 'marks' 將包含結(jié)構(gòu)成員的值。現(xiàn)在通過 '.' 訪問結(jié)構(gòu)的初始名稱的值,并打印它。

復(fù)制代碼 代碼如下:

struct MarksStruct {
   var mark: Int

   init(mark: Int) {
      self.mark = mark
   }
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.mark = 97
println(aStruct.mark) // 98
println(bStruct.mark) // 97


當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果:

98
97

結(jié)構(gòu)體最佳使用方式
Swift 語言提供功能來定義的結(jié)構(gòu)體作為自定義數(shù)據(jù)類型,用于構(gòu)建功能塊。 結(jié)構(gòu)體的實(shí)例的值傳遞給定義塊來進(jìn)一步的操作。

需要有結(jié)構(gòu):

封裝簡(jiǎn)單的數(shù)據(jù)值

使用“值”而不是“引用”復(fù)制封裝數(shù)據(jù)到它的相關(guān)聯(lián)屬性

結(jié)構(gòu)體為 “復(fù)制” 和 “引用”

在 swift 中結(jié)構(gòu)體是通過其成員的值,而不是它的引用。

復(fù)制代碼 代碼如下:

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
   }
}

var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
println(marks.mark1)
println(marks.mark2)
println(marks.mark3)


當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果:

98
96
100

另外一個(gè)實(shí)例

復(fù)制代碼 代碼如下:

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
   }
}

var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)

println(fail.mark1)
println(fail.mark2)
println(fail.mark3)


當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果:

34
42
13

結(jié)構(gòu)體 “markStruct” 需要它的成員首先定義:mark1, mark2 和 mark3. 現(xiàn)在,成員類的變量初始化容納整數(shù)值。之后結(jié)構(gòu)成員的副本使用 “self” 關(guān)鍵字創(chuàng)建。當(dāng)結(jié)構(gòu)成員的副本創(chuàng)建結(jié)構(gòu)體塊,其參數(shù)標(biāo)記傳遞給 'marks' 變量,它現(xiàn)在將保存學(xué)生的分?jǐn)?shù)。那么標(biāo)記打印為 98, 96, 100。 下一步對(duì)于相同的結(jié)構(gòu)成員的另一個(gè)實(shí)例命名為 'fail' 用于指向不同的標(biāo)記相同結(jié)構(gòu)體的成員。那么標(biāo)記現(xiàn)在打印為 34, 42, 13. 這清楚地說明了結(jié)構(gòu)會(huì)有成員變量的副本,傳入成員到它們即將推出的功能塊。

相關(guān)文章

  • Swift中使用可選類型完美解決占位問題

    Swift中使用可選類型完美解決占位問題

    這篇文章主要介紹了Swift中使用可選類型完美解決占位問題,本文講解了為Dictionary增加objectsForKeys函數(shù)、Swift中更簡(jiǎn)便的方法、內(nèi)嵌可選類型等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • swift版webview加載網(wǎng)頁進(jìn)度條效果

    swift版webview加載網(wǎng)頁進(jìn)度條效果

    這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)webview加載網(wǎng)頁進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Swift方法調(diào)度之類的普通方法底層探究

    Swift方法調(diào)度之類的普通方法底層探究

    這篇文章主要介紹了Swift-方法調(diào)度-類的普通方法底層探究,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Swift可選值優(yōu)化示例詳解

    Swift可選值優(yōu)化示例詳解

    這篇文章主要為大家介紹了Swift可選值優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Swift?Error的處理方法說明

    Swift?Error的處理方法說明

    wift?是一個(gè)類型嚴(yán)格的語言,在很多情況下各種不匹配或者強(qiáng)制解包出錯(cuò)都會(huì)導(dǎo)致系統(tǒng)崩潰。所以我們需要進(jìn)行異常處理,在swift中也叫錯(cuò)誤處理Error
    2022-08-08
  • Swift data范圍截取問題解決方案

    Swift data范圍截取問題解決方案

    這篇文章主要介紹了Swift data范圍截取問題解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Swift語言中的一些訪問控制設(shè)置詳解

    Swift語言中的一些訪問控制設(shè)置詳解

    這篇文章主要介紹了Swift語言中的一些訪問控制設(shè)置詳解,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Swift中類與結(jié)構(gòu)的初始化示例解析

    Swift中類與結(jié)構(gòu)的初始化示例解析

    這篇文章主要為大家介紹了Swift中類與結(jié)構(gòu)的初始化解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • Swift函數(shù)提前返回實(shí)例詳解

    Swift函數(shù)提前返回實(shí)例詳解

    函數(shù)相當(dāng)重要的,下面這篇文章主要給大家介紹了關(guān)于Swift函數(shù)提前返回的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 淺談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

最新評(píng)論

师宗县| 德庆县| 象山县| 云安县| 隆尧县| 教育| 屏东县| 河北区| 格尔木市| 霍城县| 鱼台县| 黄平县| 浠水县| 金川县| 贺州市| 通城县| 张家港市| 泗阳县| 宁远县| 武乡县| 梅州市| 崇信县| 法库县| 阿坝县| 宽城| 越西县| 饶河县| 龙州县| 白水县| 定襄县| 霍林郭勒市| 盐边县| 马尔康县| 阿合奇县| 荆门市| 张北县| 三江| 加查县| 准格尔旗| 建宁县| 长沙县|