麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

詳解Swift編程中下標(biāo)的用法

2020-03-09 17:52:40
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Swift編程中下標(biāo)的用法,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
 

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

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

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


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

 

The number is divisible by 11 timesThe number is divisible by 50 timesThe number is divisible by 33 timesThe number is divisible by 20 timesThe 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])


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

 

SundayMondayTuesdayWednesday

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

定義多個標(biāo)被稱為“下標(biāo)重載'在一個類 或結(jié)構(gòu)體根據(jù)需要可以提供多個下標(biāo)定義。這些多個標(biāo)是基于被下標(biāo)括號內(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])")


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

 

1.02.03.05.0

Swift 下標(biāo)支持單參數(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) 

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

 

 

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

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

 

 


 

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

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

subscript(index:Int) ->Int {
   get {
       // return an appropriate subscript value here
    }
   set(newValue) {
       // perform a suitable setting action here
    }
}
     該例定義了一個可讀寫的下標(biāo)方法,newValue可以指定,也可以不指定,不指定時使用默認的參數(shù)名newValue。
     如下例子展示了一個只讀下標(biāo)方法的定義和使用。由于只讀下標(biāo)方法只指定一個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”

下標(biāo)方法的使用 
        你能為一個類型定義和實現(xiàn)多個下標(biāo)方法,編譯器基于你傳送給下標(biāo)方法的索引參數(shù)的類型來推斷和選擇適當(dāng)?shù)南聵?biāo)方法。
        與方法類似,下標(biāo)方法可以包含任意數(shù)量的輸入?yún)?shù),且這些輸入?yún)?shù)的類型可以是任何類型,下標(biāo)方法也能返回任何類型。下標(biāo)方法也能使用可變參數(shù),但不能使用in-out參數(shù)也不能通過默認參數(shù)值。
                  如可以定義一個帶有多個輸入?yún)?shù)的表示多緯度的下標(biāo)方法,下面的例子展示了如何為一個矩陣結(jié)構(gòu)定義一個帶兩個整數(shù)類型的下標(biāo)方法以及如何使用,定義的下標(biāo)方法用來索引矩陣中定義的兩緯度的元素。
復(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教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲一级电影在线观看 | 伊人一二三四区 | 国产一区二区三区精品在线观看 | 羞羞答答影院 | 毛片在线免费视频 | 国产精品久久亚洲 | 欧美一级淫片免费视频黄 | 午夜视频中文字幕 | 日韩欧美激情视频 | 国产日韩久久久久69影院 | 色欧美视频 | 激情久久免费视频 | 激情黄页| 国产一区二区三区四区五区在线 | 九九黄色影院 | 亚州精品天堂中文字幕 | 手机国产乱子伦精品视频 | 国产自在线 | 色综合久久久久久久久久久 | 一级黄色淫片 | 成人免费网站在线观看视频 | 欧美成人一区二区三区 | jizzyouxxxx| 国产资源在线观看视频 | 91成人午夜性a一级毛片 | 国产精品久久久久久久av三级 | av在线免费看网站 | 欧美亚洲国产一区 | 草草久久久 | 欧美一级一区二区三区 | 国产亚洲精品久久久久久久久久 | 欧美一区二区三区中文字幕 | 欧美成人激情在线 | 草草视频免费 | 少妇色诱麻豆色哟哟 | 男人的天堂毛片 | 中文字幕在线观看网址 | 精品国产乱码久久久久久久久 | 欧美中文字幕一区二区三区亚洲 | 国产一区二区三区四 | 日韩视频一区在线 |