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

詳解Swift編程中下標的用法

 更新時間:2015年11月05日 14:56:00   投稿:goldensun  
這篇文章主要介紹了Swift編程中下標的用法,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下

訪問一個集合的元素成員,在類中的序列和列表,結(jié)構(gòu)和枚舉都可以使用下標。這些下標用于存儲和使用索引來檢索值。數(shù)組元素可使用如:someArray[index],在 Dictionary 實例及其后續(xù)成員元素的訪問也可以使用如:someDicitonary[key]。

對于單一類型,下標范圍可以從單一到多個聲明。我們可以用適當?shù)南聵酥剌d傳遞給下標索引值的類型。下標也可以根據(jù)輸入數(shù)據(jù)類型聲明范圍從單一維度到多維度。

下標聲明語法和用法
讓我們回顧一下計算屬性。下標也遵循計算屬性相同的語法。對于查詢類型的實例下標括在方括號內(nèi),接著是實例名稱。下標語法遵循結(jié)構(gòu)作為 “實例方法” 和 “計算屬性” 相同的語法?!皊ubscript” 關(guān)鍵字用來定義標,用戶可以指定一個或多個參數(shù),它們帶有返回類型。下標可以有讀寫或只讀屬性和實例存儲和檢索使用 “getter” 和 “setter” 屬性作為計算屬性。

語法

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

subscript(index:Int)->Int{get{// used for subscript value declarations}set(newValue){// definitions are written here}}

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

struct subexample {let decrementer:Int
    subscript(index:Int)->Int{return decrementer / index
    }}let division = subexample(decrementer:100)

println("The number is divisible by \(division[9]) times")
println("The number is divisible by \(division[2]) times")
println("The number is divisible by \(division[3]) times")
println("The number is divisible by \(division[5]) times")
println("The number is divisible by \(division[7]) times")


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

The number is divisible by 11 times
The number is divisible by 50 times
The number is divisible by 33 times
The number is divisible by 20 times
The number is divisible by 14 times

示例2

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

class daysofaweek {privatevar days =["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","saturday"]
    subscript(index:Int)->String{get{return days[index]}set(newValue){self.days[index]= newValue
        }}}var p = daysofaweek()

println(p[0])
println(p[1])
println(p[2])
println(p[3])


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

Sunday
Monday
Tuesday
Wednesday

下標選項
下標采用單一到多元的輸入?yún)?shù),這些輸入?yún)?shù)也屬于任意數(shù)據(jù)類型。還可以使用變量,可變參數(shù)的參數(shù)。下標不能提供缺省參數(shù)值,或使用任何 in-out 參數(shù)。

定義多個標被稱為“下標重載'在一個類 或結(jié)構(gòu)體根據(jù)需要可以提供多個下標定義。這些多個標是基于被下標括號內(nèi)聲明值的類型推斷。

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

structMatrix{let rows:Int, columns:Intvarprint:[Double]
    init(rows:Int, columns:Int){self.rows = rows
        self.columns = columns
        print=Array(count: rows * columns, repeatedValue:0.0)}
    subscript(row:Int, column:Int)->Double{get{returnprint[(row * columns)+ column]}set{print[(row * columns)+ column]= newValue
        }}}var mat =Matrix(rows:3, columns:3)

mat[0,0]=1.0
mat[0,1]=2.0
mat[1,0]=3.0
mat[1,1]=5.0

println("\(mat[0,0])")
println("\(mat[0,1])")
println("\(mat[1,0])")
println("\(mat[1,1])")


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

1.0
2.0
3.0
5.0

Swift 下標支持單參數(shù)到多參數(shù)聲明相應(yīng)數(shù)據(jù)類型。該程序聲明的“矩陣”結(jié)構(gòu)為2*2維數(shù)組矩陣來存儲 “Double” 數(shù)據(jù)類型。 矩陣參數(shù)被輸入整數(shù)數(shù)據(jù)類型用來聲明行和列。

矩陣新實例是通過使行和列數(shù)來初始化創(chuàng)建的,如下所示。

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

 var mat = Matrix(rows: 3, columns: 3)

矩陣值可通過傳遞行和列值到下標,通過逗號隔開,進行定義如下所示。

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

mat[0,0] = 1.0 
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0


下標方法的定義
下標方法的定義語法與實例方法和計算屬性的語法類似。
       下標方法使用subscript關(guān)鍵字來指示是一個下標方法。與實例方法一樣,下標方法定義中可以規(guī)定一個或多個輸入?yún)?shù),并帶有一個返回類型。與實例方法不同的是下標方法可以是可讀寫的或是只讀的。與計算屬性的定義一樣,下標方法通過使用getter和setter來傳達下標方法的行為。如果在下標方法的定義中g(shù)etter和setter都被指定,則定義了一個可讀寫的下標方法,如果下標方法的定義中不包含setter,則定義了一個只讀的下標方法,并且這時代表getter方法的關(guān)鍵字get也可以省略。下標方法定義的完整語法如下:

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

subscript(index:Int) ->Int {
   get {
       // return an appropriate subscript value here
    }
   set(newValue) {
       // perform a suitable setting action here
    }
}
     該例定義了一個可讀寫的下標方法,newValue可以指定,也可以不指定,不指定時使用默認的參數(shù)名newValue。
     如下例子展示了一個只讀下標方法的定義和使用。由于只讀下標方法只指定一個getter,意義是明確的,因此可以省略get關(guān)鍵字。
struct TimesTable {
   let multiplier:Int
   subscript(index:Int) ->Int {
       return multiplier *index
    }
}
let threeTimesTable =TimesTable(multiplier:3)
println("six times three is\(threeTimesTable[6])")
// prints "six times three is 18”

下標方法的使用 
        你能為一個類型定義和實現(xiàn)多個下標方法,編譯器基于你傳送給下標方法的索引參數(shù)的類型來推斷和選擇適當?shù)南聵朔椒ā?br />         與方法類似,下標方法可以包含任意數(shù)量的輸入?yún)?shù),且這些輸入?yún)?shù)的類型可以是任何類型,下標方法也能返回任何類型。下標方法也能使用可變參數(shù),但不能使用in-out參數(shù)也不能通過默認參數(shù)值。
                  如可以定義一個帶有多個輸入?yún)?shù)的表示多緯度的下標方法,下面的例子展示了如何為一個矩陣結(jié)構(gòu)定義一個帶兩個整數(shù)類型的下標方法以及如何使用,定義的下標方法用來索引矩陣中定義的兩緯度的元素。
復(fù)制代碼 代碼如下:

struct Matrix {
   let rows:Int,columns:Int
   var grid:Double[]
   init(rows:Int,columns:Int) {
       self.rows =rows
       self.columns =columns
       grid =Array(count:rows *columns,repeatedValue:0.0)
    }
 subscript(row:Int,column:Int) ->Double {
       get {
        
           return grid[(row *columns) +column]
        }
       set {
      
           grid[(row *columns) +column] =newValue
        }
    }
}
    
 var matrix =Matrix(rows:2,columns:2)
matrix[0,1] =1.5
matrix[1,0] =3.2

相關(guān)文章

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

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

    這篇文章主要介紹了Swift中使用可選類型完美解決占位問題,本文講解了為Dictionary增加objectsForKeys函數(shù)、Swift中更簡便的方法、內(nèi)嵌可選類型等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Swift中添加雙擊手勢識別器

    Swift中添加雙擊手勢識別器

    在這次IOS應(yīng)用開發(fā)教程中,我們打算實現(xiàn)手勢識別。正如你所知道的,IOS支持大量的手勢操作,它們能提供了很好的應(yīng)用控制和出色用戶體驗。
    2019-08-08
  • Swift進階教程Mirror反射示例詳解

    Swift進階教程Mirror反射示例詳解

    這篇文章主要為大家介紹了Swift進階教程Mirror反射示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 實例講解Swift中引用類型的ARC自動引用計數(shù)

    實例講解Swift中引用類型的ARC自動引用計數(shù)

    自動引用計數(shù)是在Objective-C中就有的特性,用來輔助管理對象的引用,這里我們就來以實例講解Swift中引用類型的ARC自動引用計數(shù):
    2016-07-07
  • Swift自定義UITableViewCell背景色

    Swift自定義UITableViewCell背景色

    這篇文章主要為大家詳細介紹了Swift自定義UITableViewCell背景色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Swift中字典與JSON轉(zhuǎn)換的方法

    Swift中字典與JSON轉(zhuǎn)換的方法

    Swift中經(jīng)常會遇到字典和字符串的相互轉(zhuǎn)換,本篇文章主要介紹了Swift中字典與JSON轉(zhuǎn)換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • SpringBoot3.0集成Redis緩存的實現(xiàn)示例

    SpringBoot3.0集成Redis緩存的實現(xiàn)示例

    緩存就是一個存儲器,常用 Redis作為緩存數(shù)據(jù)庫,本文主要介紹了SpringBoot3.0集成Redis緩存的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Swift中的命名空間詳解

    Swift中的命名空間詳解

    這篇文章主要給大家介紹了關(guān)于Swift中命名空間的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Swift教程之基礎(chǔ)數(shù)據(jù)類型詳解

    Swift教程之基礎(chǔ)數(shù)據(jù)類型詳解

    這篇文章主要介紹了Swift教程之基礎(chǔ)數(shù)據(jù)類型詳解,本文詳細講解了Swift中的基本數(shù)據(jù)類型和基本語法,例如常量和變量、注釋、分號、整數(shù)、數(shù)值類型轉(zhuǎn)換等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • iOS UITableView展開縮放動畫實例代碼

    iOS UITableView展開縮放動畫實例代碼

    這篇文章主要介紹了Swift UITableView展開縮放動畫實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論