我的Swift日記

寫下每天學習swift的進度,分享一些心得,順便鞭策自己
今天完成了基本語法的學習,大致有以下幾點體會:
1.變量的聲明類似於jsp,在加上“:”明確類型後使用起來很方便
譬如:
var variableValue //變量
let constantValue //常量
2.簡單程序給人相同於腳本語言的感受
3.Swift同樣支持class 以及和C++基本相同的繼承,重載特性
class NamedShape{

    var numberOfSide:Int=0

    var name:String

    

    init(name:String){

        self.name=name

    }

    

    func simpleDescription()->String{

        return "A shape with \(numberOfSide) sides"

    }

}


//繼承

class Circle: NamedShape{

    var radius:Double

    

    init(name:String,radius:Double) {

        self.radius=radius

        super.init(name:name)

        numberOfSide=1

    }

    

//增加新方法  "func"表示一個新方法類似於jsp的"function"  "->"用於指定返回值類型

    func area()->Double{

        return radius*radius*3.14

    }

    

//override重載標誌

    override func simpleDescription() -> String {

        return "A shape with only one sides"

    }

}


4.循環結構的新特性
var firstForLoop=0


for i in 0..<4{

    firstForLoop+=i

}


println(firstForLoop)

//輸出的first firstForLoop的值爲6 用..表示缺省

5.set、get 方法略有不同
默認的set get的值 直接賦值給默認的newValue

6.枚舉多樣性增強

//與C語言類似的枚舉

enum Rank:Int{

    case Ace=1

    case two,three,four,five,six,seven,eight,night,ten

    case Jack,Queen,King

    

    func simpleDescription()->String{

        switch self{

        case .Ace:

            return "ace"

        case .Jack:

            return "Jack"

        case .Queen:

            return "Queen"

        case .King:

            return "King"

        default:

            return String(self.rawValue)

        }

    }

}


func compareValue(a:Rank,b:Rank)->String{

    if a.rawValue>b.rawValue{

        return "\(a.simpleDescription()) is bigger than \(b.simpleDescription())"

    }

    else if a.rawValue==b.rawValue{

        return "\(a.simpleDescription()) and \(b.simpleDescription()) are the same"

    }

    else{

        return "\(b.simpleDescription()) is bigger than \(a.simpleDescription())"

    }

}


//未直接賦值的枚舉

enum Suit{

    case Spades,Clubs,Hearts,Diamonds

    

    func simpleDescription()->String{

        switch self{

        case .Spades:

            return "spades"

        case .Clubs:

            return "clubs"

        case .Hearts:

            return "hearts"

        case .Diamonds:

            return "diamonds"

        }

    }

    

    func colorOf()->String{

        switch self{

        case .Spades,.Clubs:

            return "black"

        case .Hearts,.Diamonds:

            return "black"

        }

    }

}


//同一個實例中可以有不同的值

enum SeverResponse{

    case Result(String,String)

    case Error(String)

}



let success = SeverResponse.Result("6:00 am","8:00pm")


let failure = SeverResponse.Error("Out of cheese")


switch success {

case let .Result(sunrise,sunset):

    let severResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."

    println(severResponse)

case let .Error(error):

    let severResponse = "Failure... \(error)"

    println(severResponse)

}

7.protocol 的實現類似java的interface

2015.6.9
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章