Swift 基础_01

来源:互联网 发布:淘宝怎么打电子面单 编辑:程序博客网 时间:2024/05/02 07:56
////  ViewController.swift//  SimpleCalculator////  Created by ChenQianPing on 16/4/10.//  Copyright © 2016年 ChenQianPing. All rights reserved.//import UIKitclass ViewController: UIViewController{    @IBOutlet weak var display: UILabel!    // 用户是不是已经输入    var userIsInTheMiddleOfTypingANumber:Bool = false    @IBAction func appendDigit(sender: UIButton) {        // Swift是非常强类型的语言        // Swift有一个非常强大的特性,叫做类型推导        let digit = sender.currentTitle!                if userIsInTheMiddleOfTypingANumber{            // 可选值(Optional)是不可以拼接字符串的,所以在这个地方,需要进行解包            display.text = display.text! + digit        } else{            display.text = digit            userIsInTheMiddleOfTypingANumber = true        }        print("digit = \(digit)")    }        @IBAction func operate(sender: UIButton) {        let operation = sender.currentTitle!                if userIsInTheMiddleOfTypingANumber        {            enter()        }                // 除数是栈中的最后一个元素,而除数是栈中最先弹出的元素        switch operation {        case "×": performOperation { $0 * $1}        case "÷": performOperation { $1 / $0}        case "+": performOperation { $0 + $1}        case "−": performOperation { $1 - $0}        case "√": performOperation { sqrt($0)}        default:break        }    }        // 函数的参数是一个函数    func performOperation(operation:(Double,Double) -> Double){        if operandStack.count >= 2{            displayValue = operation(operandStack.removeLast(),operandStack.removeLast())            enter()        }    }        // 一个名字下的两个不同功能的函数,swift会自动识别应该用哪个函数的    private func performOperation(operation:Double -> Double){        if operandStack.count >= 1{            displayValue = operation(operandStack.removeLast())            enter()        }    }    // 这个变量是一个内部的栈,去存储你输入的这些数,他的类型是一个数组,这个数组里存放的是Double的变量,注意在这个地方要初始化.(我们不能使用没有经过初始化的,会报错)    // var operandStack: Array<Double> = Array<Double>()    var operandStack = Array<Double>()        @IBAction func enter() {        userIsInTheMiddleOfTypingANumber = false                operandStack.append(displayValue)                print("operandStack = \(operandStack)")    }        var displayValue:Double{        get{            return NSNumberFormatter().numberFromString(display.text!)!.doubleValue        }        set{            display.text = "\(newValue)"            userIsInTheMiddleOfTypingANumber = false        }    }    }

0 0