swift3.0-學(xué)習(xí)小記 ~數(shù)組

數(shù)組

1.初始化

      // 定義一個(gè)可變數(shù)組
        var mutableFibs = [0, 1, 2, 3, 4]

      // 定義一個(gè)不可變數(shù)組
        let fbs = [0, 1, 2, 3, 4]

注意:var與let 的使用,使用let定義的類實(shí)例對(duì)象,這個(gè)引用永遠(yuǎn)不會(huì)發(fā)生變化,不能在定義之后,付給這個(gè)應(yīng)用以新的值,但是這個(gè)引用所對(duì)應(yīng)的內(nèi)存地址指向的對(duì)象卻是可以改變的。在 Swift 中,相較于 NSArray 和 NSMutableArray 兩種類型,數(shù)組只有?種統(tǒng)?的類型,那就是 Array。使? var 可以將數(shù)組定義為可變,但是區(qū)別于與 NS 的數(shù)組,當(dāng)你使? let 定義第?個(gè)數(shù)組,并將第?個(gè)數(shù)組賦值給它,也可以保證這個(gè)新的數(shù)組是不會(huì)改變的,因?yàn)檫@?沒(méi)有共?的引?。 Swift 標(biāo)準(zhǔn)庫(kù)中的所有集合類型都使?了“寫(xiě)時(shí)復(fù)制” 這?技術(shù),它能夠保證只在必要的時(shí)候?qū)?shù)據(jù)進(jìn)?復(fù)制。
2、常用操作
```
var testArray = [0, 1, 2, 3, 4]

  添加數(shù)據(jù)
  testArray.append(5) //[0, 1, 2, 3, 4, 5]

  刪除數(shù)組
  testArray.remove(at: 1) //[0, 2, 3, 4, 5]
  
  修改數(shù)組元素
  testArray[1] = 3 // [0, 3, 3, 4, 5]

  遍歷數(shù)組
  // for:
    var squared:[Int] = []
    for item in testArray {
        let temp = item*item
        squared.append(temp)
    }     // squared [0, 4, 9, 16, 25]

  // map:
  testArray = testArray.map{fibs in fibs * fibs}; // [0, 4, 9, 16, 25]


  ```

3、高級(jí)語(yǔ)法
以上文提到的 Array的map為例,我們?cè)贠C當(dāng)中常常會(huì)用到給數(shù)組添加方法 - category;在swift 3.0中,我們?cè)鯓訉?shí)現(xiàn)給數(shù)組添加方法呢?

extension Array {
func map<T>(_ transform: (Element) -> T) -> [T] {
  var result: [T] = []
  result.reserveCapacity(count)
  for x in self {
    result.append(transform(x))
  }
return result
  }
}

Element 是數(shù)組中包含的元素類型的占位符,T 是元素轉(zhuǎn)換之后的類型的占位符。map 函數(shù)本?并不關(guān)? Element 和 T 究竟是什么,它們可以是任意類型。T 的具體類型將由調(diào)?者傳?給map 的 transform ?法的返回值類型來(lái)決定。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容