加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 基础_01

发布时间:2020-12-14 07:06:03 所属栏目:百科 来源:网络整理
导读://// 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! // 用户
//
//  ViewController.swift
//  SimpleCalculator
//
//  Created by ChenQianPing on 16/4/10.
//  Copyright ? 2016年 ChenQianPing. All rights reserved.
//

import UIKit

class 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
        }
    }
    
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读