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

首頁 > 編程 > Swift > 正文

詳解Swift編程中下標的用法

2020-03-09 17:52:40
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Swift編程中下標的用法,是Swift入門學習中的基礎知識,需要的朋友可以參考下
 

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

對于單一類型,下標范圍可以從單一到多個聲明。我們可以用適當的下標重載傳遞給下標索引值的類型。下標也可以根據輸入數據類型聲明范圍從單一維度到多維度。

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

語法

復制代碼代碼如下:

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

示例1
復制代碼代碼如下:

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 運行上面的程序,得到以下結果

 

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

復制代碼代碼如下:

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 運行上面的程序,得到以下結果

 

SundayMondayTuesdayWednesday

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

定義多個標被稱為“下標重載'在一個類 或結構體根據需要可以提供多個下標定義。這些多個標是基于被下標括號內聲明值的類型推斷。

復制代碼代碼如下:

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 運行上面的程序,得到以下結果

 

1.02.03.05.0

Swift 下標支持單參數到多參數聲明相應數據類型。該程序聲明的“矩陣”結構為2*2維數組矩陣來存儲 “Double” 數據類型。 矩陣參數被輸入整數數據類型用來聲明行和列。

矩陣新實例是通過使行和列數來初始化創建的,如下所示。

復制代碼代碼如下:

 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

 

 


 

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

復制代碼代碼如下:

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

下標方法的使用 
        你能為一個類型定義和實現多個下標方法,編譯器基于你傳送給下標方法的索引參數的類型來推斷和選擇適當的下標方法。
        與方法類似,下標方法可以包含任意數量的輸入參數,且這些輸入參數的類型可以是任何類型,下標方法也能返回任何類型。下標方法也能使用可變參數,但不能使用in-out參數也不能通過默認參數值。
                  如可以定義一個帶有多個輸入參數的表示多緯度的下標方法,下面的例子展示了如何為一個矩陣結構定義一個帶兩個整數類型的下標方法以及如何使用,定義的下標方法用來索引矩陣中定義的兩緯度的元素。
復制代碼代碼如下:

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


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产毛片完整版| 91精品国产成人| 海角国产乱辈乱精品视频| 亚洲国产另类久久精品| 国产91热爆ts人妖在线| 国产欧美精品一区二区三区介绍| 91中文在线观看| 欧美日韩国产va另类| 国产精品mp4| 欧美乱人伦中文字幕在线| 自拍偷拍亚洲精品| 91嫩草在线视频| 色偷偷91综合久久噜噜| 不卡av电影院| 国产亚洲精品成人av久久ww| 亚洲男人第一av网站| 午夜精品在线观看| 成人在线视频网| 国产精品福利无圣光在线一区| 久久成人精品一区二区三区| 亚洲全黄一级网站| 国产亚洲美女精品久久久| 国产欧美一区二区三区久久| 亚洲最大中文字幕| 久久久精品久久久| 在线观看日韩www视频免费| 在线亚洲国产精品网| 国产精品入口福利| 亚洲国产精品99久久| 97视频在线观看网址| 欧美成年人视频网站欧美| 欧美一级片在线播放| 国产精品久久久av| 国产精品久久999| 精品亚洲夜色av98在线观看| 最近日韩中文字幕中文| 国产日本欧美在线观看| 欧美日韩福利视频| 第一福利永久视频精品| 久久久精品日本| 亚洲精品一区二区三区不| 国自产精品手机在线观看视频| 精品国产区一区二区三区在线观看| 国产精品日韩欧美综合| 日本久久91av| 91精品免费看| 91av视频在线免费观看| 91理论片午午论夜理片久久| 色哟哟入口国产精品| 国产精品久久久亚洲| 中文字幕欧美精品在线| 日韩不卡在线观看| 精品性高朝久久久久久久| 91豆花精品一区| 伊人亚洲福利一区二区三区| 欧美激情精品久久久久久变态| 最新国产成人av网站网址麻豆| 欧美另类xxx| 亚洲第一级黄色片| 亚洲国产精品女人久久久| 日本精品久久久久影院| 久久99青青精品免费观看| 亚洲一区二区久久久| 久久91亚洲精品中文字幕奶水| 欧美网站在线观看| 一区二区成人精品| 91精品久久久久久久| 亚州av一区二区| 亚洲国产97在线精品一区| 美女999久久久精品视频| 国产精品va在线播放我和闺蜜| 韩国欧美亚洲国产| 国产ts人妖一区二区三区| 国产精品揄拍一区二区| 精品久久久久国产| 欧洲精品毛片网站| 欧美中文字幕在线观看| 欧美亚洲视频在线观看| 国内精品一区二区三区| 欧美另类老女人| 91成人国产在线观看| 欧美一级大片在线免费观看| 激情久久av一区av二区av三区| 成人黄色片在线| 欧美一级视频在线观看| 全色精品综合影院| 精品亚洲夜色av98在线观看| 亚洲欧洲自拍偷拍| 国产一区二区三区视频| 亚洲欧美激情四射在线日| 热99精品只有里视频精品| 久久久久亚洲精品| 欧美一区三区三区高中清蜜桃| 国产精品999999| 日韩电视剧免费观看网站| 亚洲女同精品视频| 国产精品jvid在线观看蜜臀| 三级精品视频久久久久| 国产精品黄色影片导航在线观看| 人人爽久久涩噜噜噜网站| 日韩黄色在线免费观看| 欧美日韩福利视频| 51午夜精品视频| 51视频国产精品一区二区| 日韩在线观看网站| 久久久免费精品| 国产成人精品免费久久久久| 97视频免费在线看| 一本大道香蕉久在线播放29| 亚洲成年人在线播放| 国产午夜精品视频| 精品亚洲国产成av人片传媒| 91精品国产91久久久久久最新| 欧美激情精品久久久久久大尺度| 日韩在线视频网站| 亚洲国产欧美精品| 日韩精品极品视频免费观看| 欧美亚洲国产日本| 成人h视频在线观看播放| 成人欧美在线观看| 91最新在线免费观看| 日韩视频免费在线| 国产精品高清网站| 精品福利免费观看| 亚洲缚视频在线观看| 亚洲第一精品久久忘忧草社区| 国产成人高潮免费观看精品| 成人欧美一区二区三区在线湿哒哒| 日韩欧美在线字幕| 亚洲精品国偷自产在线99热| 国产精品免费小视频| 国产精品免费视频久久久| 国产一区二区三区高清在线观看| 欧美重口另类videos人妖| 欧美激情视频一区二区| 国产免费一区二区三区香蕉精| 黄色精品在线看| 国产视频久久网| 欧美电影免费观看大全| 久久精品视频导航| 国产91网红主播在线观看| 日韩电影视频免费| 最近2019中文字幕一页二页| 亚洲人成伊人成综合网久久久| www.久久色.com| 欧美日韩国产精品一区二区不卡中文| 亚洲网站在线观看| 国模精品视频一区二区三区| 在线观看国产成人av片| 黄色成人在线免费| 日韩精品极品毛片系列视频| 国产一区二区三区18| 亚洲偷欧美偷国内偷| 国产不卡在线观看| 91久久精品国产91久久性色| 国产97在线|日韩| 亚洲香蕉av在线一区二区三区| 久久影视电视剧免费网站清宫辞电视| 久久久久一本一区二区青青蜜月| xvideos亚洲人网站| 亚洲国产成人精品电影| 日韩免费观看av| 亚洲护士老师的毛茸茸最新章节| 国产精品一区二区三区久久|