swift 100行代码实现的计算器

前端之家收集整理的这篇文章主要介绍了swift 100行代码实现的计算器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

//
//  ViewController.swift
//  Calculator
//
//  Created by purkylin on 14-6-19.
//  Copyright (c) 2014年 Purkylin. All rights reserved.
//

import UIKit

extension String
{
    // subscript operator override
    subscript(index:Int) -> Character?
    {
        var cur = 0
        for c in self {
            if cur == index {
                return c
            }
        }
        // return nil
        let ret:Character?
        return ret
    }
}


class ViewController: UIViewController {
    var operand1: Int = 0;  // left operand
    var operand2: Int = 0;  // right operand
    var operator: Character = "#";  // operator:+-*/=

    @IBOutlet var resultLabel : UILabel = nil   // output result
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func onClick(sender : UIButton) {
        println("Click" + sender.titleForState(UIControlState.Normal));
        var label = sender.titleForState(UIControlState.Normal);
        var c:Character = label[0]!
        switch c{
        case "+","-","*","/":
            operator = c
        case "=":
            var result = 0
            switch operator {
            case "+":
                result = operand1 + operand2
            case "-":
                result = operand1 - operand2
            case "*":
                result = operand1 * operand2
            case "/":
                result = operand1 / operand2
            default:
                break
            }

            resultLabel.text = "\(result)"
            // clear status
            operator = "#"
            operand1 = result
            operand2 = 0
            break
        default:
            if operator=="#" {
                let tmp = label.toInt()!
                operand1 = operand1*10 + tmp
                resultLabel.text = "\(operand1)"
            }
            else {
                let tmp = label.toInt()!
                operand2 = operand2*10 + tmp
                resultLabel.text = "\(operand2)"
            }
        }
    }

    // 其实这个ACTION可以不单独提出来,都放到ONCLICK函数里处理
    @IBAction func clearClick(sender : UIButton) {
        operand1 = 0
        operand2 = 0
        operator = "#"
        resultLabel.text = "0"

    }
}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

猜你在找的iOS相关文章