Swift 文法小結

來源:互聯網
上載者:User

標籤:

Swift 文法小結


1.  Optional 就是枚舉
   An Optional is just an enum
       enum Optional<T>{
          case None
          case Some(T)
       }
2.Array的聲明
  var a=Array<String>()
  var a=[String]()
  let a=[“A”,”B”,”C”]不可改
  let b=a[3]
  遍曆Array可使用for in
  for array in a{
    println(“\(array)”)
  }
3.Dictionary
  var dic=Dictionary<String,Int>()
  var dic=[String:Int]()
  dic=[“title1”:1,”title2”:2]
  
  訪問一個dictionary的值將返回Optional 
  let value=dic[“title3”]   返回nil
  使用tuple遍曆Dictionary
  for (key,value) in dic {
     println(“\(key)=\(value)”)
   }
4.結構體Range  一個起點,一個終點,稱之為合理類型,Range是範型
  struct Range<T>{
     var startIndex:T
     var endIndex:T
  }
  a.在Array中Range中的類型是Int型,因為Array是通過Int索引  Range<Int>
  b.String中時String的索引  Range<String.Index>
  c.聲明  
    let array=[“a”,”b”,”c”,”d”]
    let subArray1=array[2...3]  ([“c”,”d”]) 閉區間
    let subArray2=array[2..<3]  ([“c”])  左閉右開區間
    遍曆
    for i in [27…104]{
        println(“i=\(i)”)
    }
5.NSObject(swift中所有的類都可以繼承NSObject)
  Objective-C中所有類的基類,比如UIViewController
6.NSNumber  裝數位類
  let n=NSNumber(double:35.5)
  將會以自身的值轉為int或double
  let intversion=n.intValue  / n.doubleVaule /n.boolValue
7.NSDate  儲存日期,也可以擷取當前日期和時間
  Calendar,DateFormatter,DateComponents
8.NSData 位元包
  傳遞無類型資料,未經處理資料
9.資料結構  類,枚舉,結構
  相同點:a.聲明類似  b.可以有自己的屬性和方法 c.都可以有自己的函數
  不同點:a.Enum本身是不能儲存任何值的,可以將值儲存在枚舉的關聯資訊中
        b.枚舉可以有計算型屬性
        c.結構體和類可以初始化
        d.類有繼承的性質,類型和轉化都屬於類的性質
        e.枚舉和結構體是 值傳遞,類是 引用傳遞
10.override  重寫父類方法的關鍵字
   final 可以將一個方法標為final,表示這個方法不能被重寫
11.類和執行個體都有自己的方法和屬性


   var d:Double = -10
   if d.isSignMinus {//isSignMinus是否是一個負數
       d=Double.abs(d) //取絕對值
   }
   isSignMinus是執行個體d的變數或者說是d的屬性
   abs是Double類的方法(所有對象共用),向該方法中傳入需要操作的Double類型的執行個體
   類方法 static func abs(d:Double) -> Double
12.參數名
   所有方法所有的參數都有一個內部名和外部名
   內部名:在方法中擁有一個本地變數的名字,方法中冒號之前的
   外部名:調用者準備使用的,調用方法是在冒號之前的
   a.使用外部名
     func foo(extenal internal:Int){
       let local=internal
     }
     func bar(){
       let result=foo(external: 123)
     }
   b.不使用外部名  _表示會被忽略,所有方法預設是採用該方式
   //func foo(internal:Int)
     func foo(_ internal:Int){
       let local=internal
     }
     func bar(){
       let result=foo(123)
     }
   c.強制使用內部名 #
     func foo(#internal:Int){
       let local=internal
     }
     func bar(){
       let result=foo(internal:123)
     }
    d.非第一個參數推薦使用內部名和外部名,當然,你可以使用_忽略外表名,但這不是標準的做法
     func foo(first:Int,externalSencond second:Double){
       let local=second
     }
     func bar(){
       let result=foo(123,externalSencond:5.5)
     }
13.Property Observers(屬性觀察)
   var someStoredProperty:Int = 42{
      willSet{newValue}//屬性設定前被調用
      didSet{oldValue}//屬性設定後被調用,可以用來對使用者介面進行更新
   }
    override var someStoredProperty{
      willSet{newValue}
      didSet{oldValue}
   }
   使用情境:a.在自己的類中需儲存屬性,當其他方法設定它的值時,獲得一個通知
           b.當繼承了某些類,你並不需要對這些類中的屬性做什麼修改,但當它們改變時你想知道
14.lazy  只有用到的時候才會被初始化
   a.如果使用了很多資源,用lazy是不錯的選擇
     lazy var brain=CalculatorBrain()     
   b.初始化的時候在後面放一個大括弧,也就是通過執行這個閉包來初始化這個屬性,但這個閉包直有在property被用到的時候才會執行
     lazy var someProperty:Type={
        return <the constructed vaule>
     }()
   c.可以使用一個方法來進行初始化,只有標記為lazy才可以這樣用,因為在類初始化之前,類中的方法都是不可以被調用的
      lazy var myProperty=self.initializeMyProperty()
15.initialization 初始化
   a.無父類的類,預設有一個init()方法
   b.如果一個結構體沒有初始化,它將預設得到一個將所有屬性作為參數的初始化方法,不需要實現
     struct MyStruct{
        var x: Int=42
        var y: String=“moltuae”
        init(x:Int,y:String)
     }
    c.在初始化方法裡面可以設定任何屬性的值,包括常量和變數
    d.在類或結構體中可以調用自己的init方法 self.init(),類中可以調用父類的初始化方法 super.init()
  


   



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Swift 文法小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.