亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

詳解Swift語言中的類與結構體

2020-03-09 17:49:26
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Swift語言中的類與結構體,是Swift入門學習中的基礎知識,需要的朋友可以參考下
 


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

使用類的好處:

  • 繼承獲得一個類的屬性到其他類
  • 類型轉換使用戶能夠在運行時檢查類的類型
  • 初始化器需要處理釋放內存資源
  • 引用計數允許類實例有一個以上的參考

類和結構的共同特征:

  • 屬性被定義為存儲值
  • 下標被定義為提供訪問值
  • 方法被初始化來改善功能
  • 初始狀態是由初始化函數定義
  • 功能被擴大,超出默認值
  • 確認協議功能標準

語法

復制代碼代碼如下:

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

定義類
復制代碼代碼如下:

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

創建一個實例的語法:
復制代碼代碼如下:

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)")


當我們使用 playground 運行上面的程序,我們得到以下結果

 

Mark is 300

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

復制代碼代碼如下:

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)")


當我們使用 playground 運行上面的程序,得到以下結果

 

Mark1 is 300Mark2 is 400Mark3 is 900

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

詳解Swift語言中的類與結構體

 

復制代碼代碼如下:

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)")


當我們使用 playground 運行上面的程序,得到以下結果

 

main.SampleClassmain.SampleClass

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

這不同于 C 和 Objective C 編程:

結構不用要求實現文件和接口。

結構體使我們能夠創建一個文件并自動擴展其接口到其它塊。

在結構體中的變量值被復制并傳遞在后續的代碼,通過返回的舊值的副本使得這些值不能被改變。

語法

復制代碼代碼如下:

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

結構體的定義
考慮例如,假設要訪問包含三個科目記錄標記的學生并找出三個科目的總和。在這里,markStruct用于初始化的結構有三個標記,數據類型為 'Int'。
復制代碼代碼如下:

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

訪問結構體及屬性
結構的成員是由它的結構名訪問。 結構體的實例中由 'let' 關鍵字進行初始化。
復制代碼代碼如下:

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)")

當我們使用 playground 運行上面的程序,得到以下結果:

 

Mark1 is 100Mark2 is 200Mark3 is 300

學生成績需要訪問結構名“studentMarks”。結構成員被初始化為 mark1, mark2, mark3 的整數類型值。然后,結構體 studentMarks()傳遞給 'marks' 使用 'let' 關鍵字。 'marks' 將包含結構成員的值?,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


當我們使用 playground 運行上面的程序,得到以下結果:

 

9897

結構體最佳使用方式
Swift 語言提供功能來定義的結構體作為自定義數據類型,用于構建功能塊。 結構體的實例的值傳遞給定義塊來進一步的操作。

需要有結構:

封裝簡單的數據值

使用“值”而不是“引用”復制封裝數據到它的相關聯屬性

結構體為 “復制” 和 “引用”

在 swift 中結構體是通過其成員的值,而不是它的引用。

復制代碼代碼如下:

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)

 


當我們使用 playground 運行上面的程序,得到以下結果:

 

9896100

另外一個實例

復制代碼代碼如下:

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)


當我們使用 playground 運行上面的程序,得到以下結果:

 

344213

結構體 “markStruct” 需要它的成員首先定義:mark1, mark2 和 mark3. 現在,成員類的變量初始化容納整數值。之后結構成員的副本使用 “self” 關鍵字創建。當結構成員的副本創建結構體塊,其參數標記傳遞給 'marks' 變量,它現在將保存學生的分數。那么標記打印為 98, 96, 100。 下一步對于相同的結構成員的另一個實例命名為 'fail' 用于指向不同的標記相同結構體的成員。那么標記現在打印為 34, 42, 13. 這清楚地說明了結構會有成員變量的副本,傳入成員到它們即將推出的功能塊。



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人精品h版在线观看| 亚洲在线视频观看| 日韩欧美aaa| 福利视频导航一区| 欧美精品一区二区三区国产精品| 亚洲精品aⅴ中文字幕乱码| 国产欧美一区二区三区视频| 国产精品嫩草影院一区二区| 国产成人福利夜色影视| 91欧美精品成人综合在线观看| 欧美精品中文字幕一区| 国产欧美一区二区白浆黑人| 亚洲桃花岛网站| 欧美在线一区二区三区四| 中文字幕视频一区二区在线有码| 欧洲成人在线观看| 亚洲一级一级97网| 亚洲女人天堂成人av在线| 成人欧美一区二区三区在线| 亚洲最大中文字幕| 亚洲精品免费在线视频| 日韩专区中文字幕| 精品久久久久国产| 97免费中文视频在线观看| 45www国产精品网站| 国产日本欧美视频| 国产成人精品视| 日韩亚洲精品视频| 中文字幕日韩欧美精品在线观看| 国产91色在线播放| 久久成人国产精品| 自拍偷拍亚洲欧美| 姬川优奈aav一区二区| 欧美激情女人20p| 中文日韩在线观看| 久久99久久亚洲国产| 色综合视频一区中文字幕| 懂色av中文一区二区三区天美| 久久久久久久电影一区| 国产精品美女无圣光视频| 国内精品中文字幕| 亚洲免费av片| 亚洲国产精品一区二区久| 久久中文字幕国产| 在线观看91久久久久久| 亚洲色图35p| 国产视频福利一区| 97av视频在线| 欧美另类高清videos| 日韩成人在线视频| 91久久国产综合久久91精品网站| 亚洲色无码播放| 亚洲国产毛片完整版| 美女撒尿一区二区三区| 国产美女搞久久| 欧美影院久久久| 亚洲欧美精品在线| 国产精品成人久久久久| 中文字幕免费国产精品| 欧美激情视频在线免费观看 欧美视频免费一| 欧美大片免费观看| 精品久久久久久久中文字幕| 国产精品午夜国产小视频| 精品日韩视频在线观看| 精品久久久久久国产| 成人黄色av网| 精品美女国产在线| 久久国产精品99国产精| 国产亚洲成精品久久| 成人免费午夜电影| 久久69精品久久久久久国产越南| 一区二区三区无码高清视频| 色噜噜狠狠狠综合曰曰曰88av| 国产欧美在线观看| 国产精品国产三级国产专播精品人| 欧美大奶子在线| 久久综合色88| 奇米四色中文综合久久| 欧美精品中文字幕一区| 日本午夜精品理论片a级appf发布| 色综合天天综合网国产成人网| 中文字幕精品国产| 国产一区二区三区网站| 国产精品福利在线观看网址| 国产精品福利网站| 91久久精品国产91久久| 亚洲男人天堂网| 97在线视频精品| 久久精品电影一区二区| 欧美精品久久久久久久免费观看| 亚洲天堂开心观看| 欧美一级免费视频| 中文字幕九色91在线| 久久精品国产免费观看| 亚洲一区亚洲二区亚洲三区| 国产欧美日韩中文| 精品久久久久久久久中文字幕| 日韩精品在线第一页| 国产欧美一区二区三区四区| 91免费精品视频| 国产精欧美一区二区三区| 91九色国产视频| 日本韩国在线不卡| 91久久久在线| 欧美国产日本高清在线| 欧美午夜丰满在线18影院| 国产精品99久久久久久人| 亚洲午夜小视频| 日本午夜精品理论片a级appf发布| 欧美午夜www高清视频| 欧美日韩xxx| 中文字幕日韩在线观看| 97av在线视频免费播放| 亚洲美女久久久| 国产精品久久久久久久美男| 久久亚洲国产成人| 美日韩精品免费视频| 九九热99久久久国产盗摄| 国产欧美日韩中文字幕在线| 在线精品高清中文字幕| 在线播放日韩欧美| 亚洲国产精品悠悠久久琪琪| 欧美高跟鞋交xxxxhd| 国产精品久久久久久久久免费看| 成人免费观看49www在线观看| 亚洲欧洲成视频免费观看| 国产日韩在线免费| 隔壁老王国产在线精品| 97人洗澡人人免费公开视频碰碰碰| 成人性教育视频在线观看| 中文字幕欧美亚洲| 隔壁老王国产在线精品| 91在线观看免费高清完整版在线观看| 国产成人在线播放| 日韩av免费在线播放| 国产精品视频永久免费播放| 欧美大胆在线视频| 久久久久久国产精品久久| 亚洲国产黄色片| 黑人欧美xxxx| 亚洲香蕉成视频在线观看| 久久久久久久久久久成人| 成人久久18免费网站图片| 亚洲图片在线综合| 色悠悠久久久久| 久久综合伊人77777蜜臀| 美女性感视频久久久| 日韩美女免费观看| 九九热精品视频在线播放| 韩国一区二区电影| 欧美成人精品影院| 久热爱精品视频线路一| 国产成人高清激情视频在线观看| 欧美日韩国产成人| 欧美日韩美女在线| 欧美高清视频一区二区| 久久成人亚洲精品| 亚洲精品久久久久中文字幕欢迎你| 日韩电影在线观看中文字幕| 国产视频精品va久久久久久| 福利精品视频在线| 亚洲免费高清视频| www.久久草.com| 成人在线一区二区|