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
- Swift 基础_01
- Swift基础知识_01
- As 3.0 基础_01
- 计算机基础_01
- java基础总结_01
- C++基础_01
- Javascript基础_01基本概念
- javaweb基础_01
- JavaScript基础_01
- JQuery基础_01
- MyBatis基础_01
- 3D数学基础_01
- 黑马程序员_01 基础小结
- 黑马程序员_Java基础_01
- 基础练习2_01字串
- java_基础篇_01(补)
- linux编程基础_01常用命令
- Java基础--IO流_01
- CSS3变形笔记
- MD文件如何打开
- successView isn't set
- hdu 1542 Atlantis(矩形面积并)
- Linux学习(3)——文件管理命令
- Swift 基础_01
- 线性代数(一): 何谓线性代数
- odoo 新API装饰器中one、model、multi的区别
- 线性表
- Hexo系列2:node.js+hexo博客同步与备份
- QT中使用OpenGL(1)——画一个三角形
- 160. Intersection of Two Linked Lists
- 软件汇总
- 生成特定分布随机数的方法