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

詳解Swift編程中的方法與屬性的概念

 更新時(shí)間:2015年11月04日 17:41:18   投稿:goldensun  
這篇文章主要介紹了Swift編程中的方法與屬性的概念,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

方法
在 Swift 中特定類型的相關(guān)聯(lián)功能被稱為方法。在 Objective C 中類是用來定義方法,其中作為 Swift 語(yǔ)言為用戶提供了靈活性,類,結(jié)構(gòu)和枚舉中可以定義使用方法。

實(shí)例方法
在 Swift 語(yǔ)言,類,結(jié)構(gòu)和枚舉實(shí)例通過實(shí)例方法訪問。

  • 實(shí)例方法提供的功能
  • 訪問和修改實(shí)例屬性
  • 函數(shù)關(guān)聯(lián)實(shí)例的需要

實(shí)例方法可以寫在花括號(hào) {} 內(nèi)。它隱含的訪問方法和類實(shí)例的屬性。當(dāng)該類型指定具體實(shí)例它調(diào)用獲得訪問該特定實(shí)例。

語(yǔ)法

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

func funcname(Parameters)-> returntype
{Statement1Statement2---Statement N
    return parameters
}

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

class calculations {let a:Intlet b:Intlet res:Int
   
    init(a:Int, b:Int){self.a = a
        self.b = b
        res = a + b
    }
   
    func tot(c:Int)->Int{return res - c
    }
   
    func result(){
        println("Result is: \(tot(20))")
        println("Result is: \(tot(50))")}}let pri = calculations(a:600, b:300)
pri.result()

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

Result is: 880
Result is: 850

Calculations 類定義了兩個(gè)實(shí)例方法:

init() 被定義為兩個(gè)數(shù) a 和 b 相加,并將其結(jié)果存儲(chǔ)在'res'

tot() 用于通過從 “res” 值減去 'c'

最后,調(diào)用打印的計(jì)算a和b的值方法. 實(shí)例方法以 "." 語(yǔ)法訪問

局部和外部參數(shù)名稱
Swift 函數(shù)描述了局部和全局變量聲明。同樣,Swift 方法的命名規(guī)則也類似 Objective C。但是局部和全局參數(shù)名稱聲明的特性對(duì)于函數(shù)和方法不同。 swift 第一個(gè)參數(shù)是由介詞名稱'with', 'for' 和 'by' 訪問命名規(guī)則。

Swift 提供聲明作為局?jǐn)?shù)參數(shù)名稱,其它參數(shù)名稱為全局參數(shù)名,第一參數(shù)是方法名稱。在這里,“no1”方法作為局部參數(shù)名來聲明。 'no2' 用于全局聲明,并通過該程序訪問。

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

class division {var count:Int=0
    func incrementBy(no1:Int, no2:Int){
        count = no1 / no2
        println(count)}}let counter = division()
counter.incrementBy(1800, no2:3)
counter.incrementBy(1600, no2:5)
counter.incrementBy(11000, no2:3)

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

600
320
3666

外部參數(shù)名稱使用 # 和 _ 符號(hào)
盡管 Swift 方法提供第一個(gè)參數(shù)名稱作為局部聲明,用戶必須提供以修改參數(shù)名稱從局部到全局聲明。這可以通過'#'符號(hào)前綴使用第一參數(shù)名來完成。通過這樣做,第一參數(shù)可以作為全局在整個(gè)模塊訪問。

當(dāng)用戶需要使用外部名稱訪問在后面的參數(shù)名中,方法的名字使用“_”符號(hào)覆蓋。

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

class multiplication {var count:Int=0
    func incrementBy(#no1:Int, no2:Int){
        count = no1 * no2
        println(count)}}let counter = multiplication()
counter.incrementBy(no1:800, no2:3)
counter.incrementBy(no1:100, no2:5)
counter.incrementBy(no1:15000, no2:3)

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

2400
500
45000

在方法中的Self屬性
方法有一個(gè)隱式屬性被稱為“self”,所有定義的類型實(shí)例所都有?!皊elf”屬性被用于表示當(dāng)前的實(shí)例定義的方法。

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

class calculations {let a:Intlet b:Intlet res:Int
   
    init(a:Int, b:Int){self.a = a
        self.b = b
        res = a + b
        println("Inside Self Block: \(res)")}
   
    func tot(c:Int)->Int{return res - c
    }
   
    func result(){
        println("Result is: \(tot(20))")
        println("Result is: \(tot(50))")}}let pri = calculations(a:600, b:300)let sum = calculations(a:1200, b:300)

pri.result()
sum.result()


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

Inside Self Block: 900
Inside Self Block: 1500
Result is: 880
Result is: 850
Result is: 1480
Result is: 1450

修改的實(shí)例方法值類型
在 Swift 語(yǔ)言結(jié)構(gòu)和枚舉和值類型不能由它的實(shí)例方法來改變。然而,swift 語(yǔ)言通過“變異”行為提供了靈活修改值類型。突變將使得在實(shí)例方法中的任何變化,將方法執(zhí)行之后變化返回到原來的形式。此外,由 “selft” 屬性的新實(shí)例其隱式函數(shù)創(chuàng)建,執(zhí)行之后將取代現(xiàn)有的方法

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

struct area {var length =1var breadth =1
   
    func area()->Int{return length * breadth
    }
   
    mutating func scaleBy(res:Int){
        length *= res
        breadth *= res
       
        println(length)
        println(breadth)}}var val = area(length:3, breadth:5)
val.scaleBy(3)
val.scaleBy(30)
val.scaleBy(300)

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

9
15
270
450
81000
135000

Self 屬性的不同誘變方法
突變方法結(jié)合 “self” 屬性分配給新實(shí)例所定義的方法。

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

struct area {var length =1var breadth =1
   
    func area()->Int{return length * breadth
    }
   
    mutating func scaleBy(res:Int){self.length *= res
        self.breadth *= res
        println(length)
        println(breadth)}}var val = area(length:3, breadth:5)
val.scaleBy(13)

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

39
65

類型方法
當(dāng)方法的特定實(shí)例調(diào)用,它調(diào)用一個(gè)實(shí)例方法并且當(dāng)方法調(diào)用特定類型的方法的一個(gè)被定義為 "類型方法“。類型方法 “類” 是由“func”關(guān)鍵字和結(jié)構(gòu)定義,和枚舉型方法使用 “func” 關(guān)鍵字之前的“static”關(guān)鍵字定義。

類型方法調(diào)用,是通過訪問 '.' 而不是調(diào)用特定實(shí)例的方法,例子和語(yǔ)法如下:

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

 classMath{class func abs(number:Int)->Int{if number <0{return(-number)}else{return number
        }}}struct absno
{static func abs(number:Int)->Int{if number <0{return(-number)}else{return number
        }}}letno=Math.abs(-35)let num = absno.abs(-5)

println(no)
println(num)


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

35
5

屬性
Swift 語(yǔ)言提供了類,枚舉或結(jié)構(gòu)相關(guān)聯(lián)值的屬性。屬性可以被進(jìn)一步分為存儲(chǔ)屬性和計(jì)算屬性。

存儲(chǔ)性能和計(jì)算屬性的區(qū)別

2015114173815210.png (423×115)

這兩種存儲(chǔ)和計(jì)算屬性與實(shí)例類型相關(guān)聯(lián)。當(dāng)屬性與它的類型值相關(guān)聯(lián),那么它定義為“類型屬性”。存儲(chǔ)和計(jì)算的屬性通常與一個(gè)特定類型的實(shí)例相關(guān)聯(lián)。然而,屬性也可以與類型本身相關(guān)聯(lián)。這樣的屬性是已知的類型的屬性。 屬性觀察者也被使用

觀察存儲(chǔ)的屬性值

觀察子類從父繼承而得的屬性

存儲(chǔ)屬性
Swift 介紹存儲(chǔ)的屬性概念用來存儲(chǔ)常量和變量的實(shí)例。常量存儲(chǔ)的屬性由 'let' 關(guān)鍵字定義和存儲(chǔ)變量的屬性由 “var” 關(guān)鍵字定義。

在定義存儲(chǔ)的屬性提供了“默認(rèn)值”

在初始化期間用戶可以初始化和修改初始值

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

structNumber{var digits:Intlet pi =3.1415}var n =Number(digits:12345)
n.digits =67

println("\(n.digits)")
println("\(n.pi)")


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

67
3.1415

考慮在上面的代碼,如下面的一行:

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

let pi = 3.1415

這里,可變圓周率被初始化為存儲(chǔ)屬性值使用所述實(shí)例 pi = 3.1415. 所以,每當(dāng)實(shí)例被稱為將持有單獨(dú)的值是:3.1415。

另一種方法,已存儲(chǔ)的屬性可能常量結(jié)構(gòu)。這樣結(jié)構(gòu)的整個(gè)實(shí)例將被認(rèn)為是“常量屬性的存儲(chǔ)”。

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

structNumber{var digits:Intlet numbers =3.1415}var n =Number(digits:12345)
n.digits =67

println("\(n.digits)")
println("\(n.numbers)")
n.numbers =8.7


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

error: cannot assign to 'numbers' in 'n'
n.numbers = 8.7

重新初始化'數(shù)字'為8.7,它將返回指示“數(shù)字''被聲明為常數(shù)的錯(cuò)誤消息。

懶存儲(chǔ)屬性
Swift 提供了所謂的“懶存儲(chǔ)屬性',當(dāng)變量被首次初始化它不會(huì)計(jì)算初始值. “l(fā)azy” 修飾符的變量聲明之前,把它作為一個(gè)懶存儲(chǔ)屬性。

延遲屬性被使用:

要延遲對(duì)象的創(chuàng)建。

當(dāng)屬性是依賴于一個(gè)類的其他部分,即:尚未知道

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

class sample {
   lazy varno= number()// `var` declaration is required.}class number {var name ="Swift"}var firstsample = sample()
println(firstsample.no.name)

當(dāng)我們使用 playground 運(yùn)行上面的程序,我們得到以下結(jié)果
Swift
實(shí)例變量
在Objective C 中,存儲(chǔ)屬性還必須有實(shí)例變量用于備份目的,存放在存儲(chǔ)的屬性聲明的值。

Swift 集成了這些概念成一個(gè)“存儲(chǔ)的屬性”聲明。而不必有一個(gè)相應(yīng)的實(shí)例變量和備份值'存儲(chǔ)屬性“,包含通過變量名一個(gè)位置定義的有關(guān)變量屬性所有信息集成,數(shù)據(jù)類型和存儲(chǔ)器管理功能。

計(jì)算屬性
而不是存儲(chǔ)計(jì)算的屬性值提供了一個(gè)getter和一個(gè)可選的 setter 間接來檢索和設(shè)置其他屬性和值。

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

class sample {var no1 =0.0, no2 =0.0var length =300.0, breadth =150.0var middle:(Double,Double){get{return(length /2, breadth /2)}set(axis){
         no1 = axis.0-(length /2)
         no2 = axis.1-(breadth /2)}}}var result = sample()
println(result.middle)
result.middle =(0.0,10.0)

println(result.no1)              
println(result.no2)


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

(150.0, 75.0)
-150.0
-65.0

當(dāng)計(jì)算的屬性留下了新的值為未定義默認(rèn)值將針對(duì)特定的變量來設(shè)置。

計(jì)算屬性為只讀屬性
在計(jì)算屬性只讀屬性被定義為 getter,但不是 setter。它總是用來返回一個(gè)值。變量通過使用 '.' 語(yǔ)法訪問,但不能被設(shè)置為其他值。

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

class film {var head =""var duration =0.0var metaInfo:[String:String]{return["head":self.head,"duration":"\(self.duration)"]}}var movie = film()
movie.head ="Swift Properties"
movie.duration =3.09

println(movie.metaInfo["head"]!)     
println(movie.metaInfo["duration"]!)


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

Swift Properties
3.09

計(jì)算屬性屬性觀察者
在Swift 中使用屬性觀察者來觀察和設(shè)置屬性值響應(yīng)。 當(dāng)每一次屬性值設(shè)置屬性觀察者都被調(diào)用。 除了懶存儲(chǔ)屬性,我們可以通過添加屬性觀察者“繼承”屬性“覆蓋”方法。

在存放值之前 - willset

存儲(chǔ)新的值之后 - didset

當(dāng)一個(gè)屬性被設(shè)置在初始化 willset 和 didset 觀察者不能調(diào)用。

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

classSamplepgm{var counter:Int=0{
      willSet(newTotal){
         println("Total Counter is: \(newTotal)")}
      didSet{if counter > oldValue {
            println("Newly Added Counter \(counter - oldValue)")}}}}letNewCounter=Samplepgm()NewCounter.counter =100NewCounter.counter =800

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

Total Counter is: 100
Newly Added Counter 100
Total Counter is: 800
Newly Added Counter 700

局部和全局變量
對(duì)于計(jì)算和觀察屬性局部和全局變量的聲明。

2015114174003520.png (700×181)

類型屬性
屬性定義類型定義部分有大括號(hào){},并且變量的范圍也被前面所定義。要定義值類型使用 “static” 關(guān)鍵字以及類的類型使用 “class” 關(guān)鍵字。

語(yǔ)法

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

structStructname{staticvar storedTypeProperty =" "staticvar computedTypeProperty:Int{// return an Int value here}}enumEnumname{staticvar storedTypeProperty =" "staticvar computedTypeProperty:Int{// return an Int value here}}classClassname{classvar computedTypeProperty:Int{// return an Int value here}}

查詢和設(shè)置屬性
類似于實(shí)例屬性類型屬性查詢和設(shè)置,只是使用 “.” 語(yǔ)法,而不用指向該實(shí)例的類型。
復(fù)制代碼 代碼如下:

 structStudMarks{staticlet markCount =97staticvar totalCount =0varInternalMarks:Int=0{
      didSet {ifInternalMarks>StudMarks.markCount {InternalMarks=StudMarks.markCount
         }ifInternalMarks>StudMarks.totalCount {StudMarks.totalCount =InternalMarks}}}}var stud1Mark1 =StudMarks()var stud1Mark2 =StudMarks()

stud1Mark1.InternalMarks=98
println(stud1Mark1.InternalMarks)

stud1Mark2.InternalMarks=87
println(stud1Mark2.InternalMarks)


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

97
87

相關(guān)文章

  • Swift學(xué)習(xí)教程之訪問控制詳解

    Swift學(xué)習(xí)教程之訪問控制詳解

    訪問控制可以限定你在源文件或模塊中訪問代碼的級(jí)別,也就是說可以控制哪些代碼你可以訪問,哪些代碼你不能訪問。下面這篇文章主要給大家介紹了關(guān)于Swift學(xué)習(xí)教程之訪問控制的相關(guān)資料,需要的朋友可以參考下。
    2017-08-08
  • 利用Swift如何計(jì)算文本的size示例詳解

    利用Swift如何計(jì)算文本的size示例詳解

    這篇文章主要給大家介紹了關(guān)于利用Swift如何計(jì)算文本的size的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們的工作或者學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Swift類和對(duì)象的底層探索分析

    Swift類和對(duì)象的底層探索分析

    這篇文章主要為大家介紹了Swift類和對(duì)象的底層探索分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 程序遷移到swift 3.0的一些實(shí)用技巧

    程序遷移到swift 3.0的一些實(shí)用技巧

    Swift項(xiàng)目為適配iOS10,無奈只能更新Xcode 8 ,可是發(fā)現(xiàn)一入3.0深似海,從此幸福是路人。于是邊摸索邊修改,終于完成了代碼遷移。節(jié)后在完成手頭工作后,整理思路把Swift3.0遷移的一些實(shí)用技巧分享大家,需要的朋友可以參考下。
    2017-03-03
  • Swift 常量與變量實(shí)例詳解

    Swift 常量與變量實(shí)例詳解

    這篇文章主要介紹了Swift 常量與變量實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Swift無限循環(huán)控件開發(fā)

    Swift無限循環(huán)控件開發(fā)

    這篇文章主要為大家詳細(xì)介紹了Swift無限循環(huán)控件開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Swift使用Cocoa中的數(shù)據(jù)類型教程

    Swift使用Cocoa中的數(shù)據(jù)類型教程

    這篇文章主要介紹了Swift使用Cocoa中的數(shù)據(jù)類型教程,Swift 會(huì)自動(dòng)將一些 Objective-C 類型轉(zhuǎn)換為 Swift 類型,以及將 Swift 類型轉(zhuǎn)換為 Objective-C 類型,需要的朋友可以參考下
    2014-07-07
  • swift 可選型的使用詳解

    swift 可選型的使用詳解

    可選性是Swift提供的一個(gè)特殊類型,它為我們編寫程序提供便利的條件。這篇文章主要介紹了swift 可選型的使用詳解,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • 詳解Swift中的Characters字符類型與String字符串類型

    詳解Swift中的Characters字符類型與String字符串類型

    Swift中的字符串操作相當(dāng)便捷,下面我們來詳解Swift中的Characters字符類型與String字符串類型,需要的朋友可以參考下
    2016-06-06
  • swift where與匹配模式的實(shí)例詳解

    swift where與匹配模式的實(shí)例詳解

    這篇文章主要介紹了swift where與匹配模式的實(shí)例詳解的相關(guān)資料,這里附有簡(jiǎn)單的示例代碼,講的比較清楚,需要的朋友可以參考下
    2017-07-07

最新評(píng)論