Swift第二天学习

// 其实不知道这后面加个!号是什么意思 

@IBAction func buttonClick(sender: AnyObject) {

        

        let sou = Int(tf.text!)

        

        showLabel.text = String(Shape.init().jishus(sou!))

        

        

    }

    @IBOutlet weak var tf: UITextField!

    @IBOutlet weak var showLabel: UILabel!

 

  override func viewDidLoad() {

        super.viewDidLoad()

 

    

        // 1.

        print(sumof(1,2,3,4,5,6,7,8,9,10))

        

        // 2.show it

        showLabel.text = String(sumof(1,2,3,4,5,6,7,8,9,10))

    

        // 3.函数嵌套

        func returnFifteen() -> Int {

            var y = 10

            func add() {

                y += 5

            }

            add()

            return y + sumof(1,2,3,4,5,6)

        }

        print(returnFifteen())

        

        // 4.

        func makeIncrementer() -> (Int -> Int) {

            func addOne(number: Int) -> Int {

                return 1 + number

            }

            return addOne

        }

        let increment = makeIncrementer()

        print(increment(7))

        

        // 5.一个函数可以使用另一个函数当参数

        func hasAnyMatches(list: [Int] ,condition: Int -> Bool) -> Bool {

            for item in list {

                if condition(item) {

                    return true

                }

            }

            return false

        }

        func lessThanTen(number: Int) -> Bool {

            return number < 10

        }

        let numbers = [20,34,56,2]

        hasAnyMatches(numbers, condition: lessThanTen)

        print("(hasAnyMatches(numbers, condition: lessThanTen)) is")

        

        // ({})匿名闭包

        numbers.map({

            (number: Int) -> Int in

            let result = 3 * number

            return result

        })

        

        // 判断是不是奇数

        print(jishu(9))

        

        // 

        var string:String

        string = "Hello world"

        string .appendContentsOf(" - sososo")

        string .appendContentsOf(" == +++++++ gogo")

        print(string)

        

        

        // 调用一个类里的方法

        print(Shape.init().simpleDescription())

        

        // 实例化一个类,并给类里的成员赋值,和调用类里的方法

        let shape = Shape()

        let bol = shape.jishus(100)

        shape.numberOfSides = 100

        let shapeDescription = shape.simpleDescription()

        print("(bol) (shapeDescription)")

        

        // init 

        let nameshape = NameShape.init(name: "XHSare")

        nameshape.numberOfSides = 1000

        let names = nameshape.simpleDescription()

        print(names)

        

        // 子类继承父类1

        let square = Square.init(sideLength: 3.3, name: "my world")

        square.sideLength = 1030

        print(square.area())

        print(square.simpleDescription())

        

        // 子类继承父类2

        let circle = Circle.init(r: 9.9, name: "")

        print(circle.describe())

        print(circle.simpleDescription()) //直接调用父类的方法。

        

        // 子类继承父类3 set get方法

        let triangle = EquilateralTriangle.init(sideLength: 10.0, name: "天下")

        //triangle.perimeter = 100 // newValue 的值 这里调用此方法就会调用set方法

        //triangle.sideLength = 10//

        print(triangle.simpleDescription())

        print(triangle.perimeter)

        

        

        // enum

        let ace = Rank.Jack

        let aceRawValue = ace.rawValue

        print(aceRawValue)

        

        // 两个枚举类型比较  返回1是左边数大于右边,0是相待 -1是左边数小于右边

        print(rankCmp(Rank.Five, num2: Rank.Ten))

        

        // 枚举2

        let hearts = Suit.Hearts

        let heartDescription = hearts.simpleDescription()

        print(heartDescription)

        let heartColor = Suit.Hearts

        print(heartColor.color())

        

        

        // 结构体1

        let threeOfSpades = Card(rank: .Ace, suit: .Hearts)

        let threeOfSpadesDescripthion = threeOfSpades.simpleDescription()

        print(threeOfSpadesDescripthion)

        

        // 初识swift Label

        let myLabel: UILabel = UILabel.init(frame: CGRectMake(10, 80, 200, 30))

        myLabel.textColor = UIColor.whiteColor()

        myLabel.backgroundColor = UIColor.blackColor()

        myLabel.layer.cornerRadius = 5.0

        myLabel.layer.masksToBounds = true

        myLabel.layer.borderWidth = 1

        myLabel.layer.borderColor = UIColor.redColor().CGColor

        myLabel.text = "这是个Label"

        self.view.addSubview(myLabel)

        

       

        

    }

    

    

    

    

    struct Card {

        

        var rank: Rank

        var suit: Suit

        func simpleDescription() ->String {

           

            return "The (rank.simpleDescription()) of (suit.simpleDescription())"

            

        }

       

        

        

    }

    

    func rankCmp(num1: Rank,num2: Rank) -> Int {

        

        

        var resultNum: Int = 0

        

        if num1.rawValue > num2.rawValue {

            resultNum = 1

        }

        

        if num1.rawValue < num2.rawValue {

            resultNum = -1

        }

        

        if num1.rawValue == num2.rawValue {

            resultNum = 0

        }

        

        return resultNum

    }

    

    

    enum Suit {

        

        case Spades, Hearts, Diamonds, Clubs

        func simpleDescription() ->String {

            switch self{

            case .Spades:

                return "spades"

            case.Hearts:

                return "hearts"

            case.Diamonds:

                return "diamonds"

            case.Clubs:

                return "clubs"

            }

        }

        func color() ->String {

            switch self {

            case.Spades:

                return "black"

            case.Clubs:

                return "black"

            case.Hearts:

                return "red"

            case.Diamonds:

                return "red"

            }

        }

        

    }

    

   

    // 枚举

    enum Rank : Int {

        

        case Ace = 1

        case Two, Three, Four, Five, Six, Seven, Eight, Nine, 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("nonono")

            }

        }

    }

    

    

    

    

    class EquilateralTriangle: NameShape {

        

        var sideLength : Double = 0.0

        

        init(sideLength: Double,name :String){

            self.sideLength = sideLength

            super.init(name: name)

            numberOfSides = 44

        }

        

        var perimeter: Double {         // set get 方法

            get {

                return 3.0 * sideLength

            }

            set {

                sideLength = newValue / 3.0

            }

        }

        

        override func simpleDescription() -> String {

            return "(name) An equilateral triagle with sides of length (perimeter)."

        }

    }

    

    

    class Square : NameShape { // 继承自父类

        var sideLength: Double

        init(sideLength: Double,name: String) {

            

            self.sideLength = sideLength

            super.init(name: name) // 调用父类的init方法

            numberOfSides = 4

        }

        func area() -> Double {

            return sideLength * sideLength

        }

        

        override func simpleDescription() -> String { // 重写了父类的方法,必须加override标识

            return "(self.name) with sides of length (sideLength). (super.simpleDescription())"

        }

        

    

    }

    

    class Circle: NameShape {

        var r:Double = 0.0

        init(r : Double,name :String){

            

            self.r = r

            super.init(name: name) // 调用父类的init方法 。。为子类的name属性命名

            numberOfSides = 999     // 给父类的numberOfSides变量命名

        }

        

        func area() -> Double {

            return 3.14*r*r

        }

        

        func describe() -> String{ //因为两个函数都不是继承自父类的方法所以不用加override

            return "(name) have (area()) m2 area it's (numberOfSides)"

        }

    }

    

    

    class NameShape {

        var numberOfSides: Int = 0

        var name : String

        

        init (name : String) {

            self.name = name // self.来区分'name'属性和构造器的'name'参数

        }

        

        func simpleDescription() ->String {

            return "(self.name) with (numberOfSides) sides."

        }

    }

    

    

    

    class Shape {

        

        

        var numberOfSides = 999

        func simpleDescription() -> String {

            return "A shape with (numberOfSides) sides"

        }

        

        

        func jishus(number: Int) -> Bool {

            

            if number % 2 != 0 {

                return false

            }

            return true

            

        }

        

        

    }

    

    

    func jishu(number: Int) -> Bool {

        

        if number % 2 != 0 {

            return false

        }

        return true

        

    }

    

    

    

    

    func sumof(numbers:Int...) ->Int {

        

        var sum = 0

        for number in numbers {

            sum += number

        }

        

        return sum

    }

    

    

 

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

 

 

}