程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 詳解Swift說話中的類與構造體

詳解Swift說話中的類與構造體

編輯:更多關於編程

詳解Swift說話中的類與構造體。本站提示廣大學習愛好者:(詳解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 300
Mark2 is 400
Mark3 is 900

類標識符
在 Swift 援用多個常量和變量指向的單個實例。要懂得常量和變量指向一個特定的類實例標識操作符的應用。 類實例老是經由過程援用傳遞。在類NSString,NSArray 和 NSDictionary 實例一直分派作為參考傳遞到現有的實例,而不是應用一個正本。


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.SampleClass
main.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 100
Mark2 is 200
Mark3 is 300

先生成就須要拜訪構造名“studentMarks”。構造成員被初始化為 mark1, mark2, mark3 的整數類型值。然後,構造體 studentMarks()傳遞給 'marks' 應用 'let' 症結字。 'marks' 將包括構造成員的值。如今經由過程 '.' 拜訪構造的初始稱號的值,並打印它。

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 運轉下面的法式,獲得以下成果:

98
97

構造體最好應用方法
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 運轉下面的法式,獲得以下成果:

98
96
100

別的一個實例

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 運轉下面的法式,獲得以下成果:

34
42
13

構造體 “markStruct” 須要它的成員起首界說:mark1, mark2 和 mark3. 如今,成員類的變量初始化包容整數值。以後構造成員的正本應用 “self” 症結字創立。當構造成員的正本創立構造體塊,其參數標志傳遞給 'marks' 變量,它如今將保留先生的分數。那末標志打印為 98, 96, 100。 下一步關於雷同的構造成員的另外一個實例定名為 'fail' 用於指向分歧的標志雷同構造體的成員。那末標志如今打印為 34, 42, 13. 這清晰地解釋了卻構會有成員變量的正本,傳入成員到它們行將推出的功效塊。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved