Swift实现简易计算器功能

 更新时间:2022年01月26日 08:39:17   作者:文恒  
这篇文章主要为大家详细介绍了Swift实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

用Swift写一个简单计算器的Demo,供大家参考,具体内容如下

实验环境:

Xcode v6.4   & OS X Yosemite 10.10

功能描述:

1、实现加减乘除+根号(结果display为Double型)
2、边界适应:各元素之间的距离固定,且适应手机旋转(Roate)
(学习过程,根据Stanford的Swift课程而写的程序)

代码实现:
 

//
//  ViewController.swift
//  Calculator
//
//  Created by VincentYau on 4/7/16.
//  Copyright (c) 2016 VincentYau. All rights reserved.
//

import UIKit
class ViewController: UIViewController
{
    @IBOutlet weak var display: UILabel!

    var userIsInTheMiddleOfTypingANumber:Bool = false
    //用户是否已经输入数字,由于Swift的变量必须负初始值,所以设为false

    @IBAction func appendDigit(sender: UIButton){
        let digit = sender.currentTitle!//直接获取Button的数字

        //若已输入过数字,则直接往display中添加数字,否则直接现实新点击数字,去除原始0的操作
        if userIsInTheMiddleOfTypingANumber{
            display.text = display.text! + digit
        }else{
            display.text = digit
            userIsInTheMiddleOfTypingANumber = true
        }
    }

    //对数字进行运算
    @IBAction func operate(sender: UIButton) {
        let operation = sender.currentTitle!
        if userIsInTheMiddleOfTypingANumber{
            enter()
        }
        switch operation{
        /*swift算法极为简洁,当调用方法performOperation时,其自动对比方法的参数,而无需在
         *调用方法时写明参数类型,例如,这里的参数$0 与 $1并没有指明类型,而Swift会直接将其适应为
         *方法performOpetation中的Double型
        */
        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支持方法的重载,但Obj-C不允许,这里继承了Obj-C的
    //类UIViewColler,不能重载方法performOperation,故将其变为Private方法
    private func performOperation(operation: Double -> Double){
        if operandStack.count >= 1 {
            displayValue = operation(operandStack.removeLast())
            enter()
        }

    }
    var operandStack = Array<Double>()  

    //若用户点击enter,则将相应数字添加至数组Array中  
    @IBAction func enter() {
        userIsInTheMiddleOfTypingANumber = false
        operandStack.append(displayValue)
        println("operandStack = \(operandStack)")
    }
    var displayValue: Double {
        get{
            return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
        }
        set{
            display.text = "\(newValue)"
            userIsInTheMiddleOfTypingANumber = false
        }
    }
}

注意:

这里容易忽略的是,各元素之间的距离还有元素与边界的距离,设置好后如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • EvenLoop模型在iOS的RunLoop应用示例

    EvenLoop模型在iOS的RunLoop应用示例

    这篇文章主要为大家介绍了EvenLoop模型在iOS的RunLoop应用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • swift内存管理指针类型使用实例详解

    swift内存管理指针类型使用实例详解

    这篇文章主要为大家介绍了swift内存管理指针类型使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 举例讲解Swift编程中switch...case语句的用法

    举例讲解Swift编程中switch...case语句的用法

    这篇文章主要介绍了Swift编程中switch...case语句的用法,其中fallthrough关键字在switch语句中的使用是重点,需要的朋友可以参考下
    2016-04-04
  • Swift自动调整视图布局AutoLayout和AutoresizingMask功能详解

    Swift自动调整视图布局AutoLayout和AutoresizingMask功能详解

    这篇文章主要为大家介绍了Swift自动调整视图布局AutoLayout和AutoresizingMask功能及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 特定用例下的Combine全面使用详解

    特定用例下的Combine全面使用详解

    这篇文章主要为大家介绍了特定用例下的Combine全面使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 详解Swift的内存管理

    详解Swift的内存管理

    这篇文章主要介绍了Swift的内存管理,对内存管理感兴趣的同学,可以参考下
    2021-04-04
  • Swift中添加双击手势识别器

    Swift中添加双击手势识别器

    在这次IOS应用开发教程中,我们打算实现手势识别。正如你所知道的,IOS支持大量的手势操作,它们能提供了很好的应用控制和出色用户体验。
    2019-08-08
  • Swift 中 Opaque Types学习指南

    Swift 中 Opaque Types学习指南

    这篇文章主要为大家介绍了Swift 中 Opaque Types学习指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Swift实现表格视图单元格单选(2)

    Swift实现表格视图单元格单选(2)

    这篇文章主要为大家详细介绍了Swift实现表格视图单元格单选的第二篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Swift自定义UITableViewCell背景色

    Swift自定义UITableViewCell背景色

    这篇文章主要为大家详细介绍了Swift自定义UITableViewCell背景色,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论