当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Objective-C  » 编程基础
分享到: 
收藏 +0
2
<无详细内容>
标签: Swift

代码片段(2) [全屏查看所有代码]

1. [代码]swift calculator     跳至 [1] [全屏预览]

//
//  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"

    }
}

2. [图片] swift_calculator.png    



开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(9)

  • 1楼:痞子蔡 发表于 2014-06-21 20:00 回复此评论
    此贴必火!!!
  • 2楼:开源中国真理部部长 发表于 2014-06-21 21:32 回复此评论
    业余时间还在看语法书,由于依然用的是Maverick,没有更新到Yosemite,所以还没写过一行Swift代码,请教几个问题:
    1. 现在用Swift编写OS X和iOS应用,调用的类库(如你的代码中出现的UIButton等)本质上还是Cocoa和Cocoa-Touch中的Objective-C封装的对么。
    2. 如果是,那么现在Apple有没有提供使用Swift作为原生语言的框架。
  • 3楼:pengyouya123 发表于 2014-06-22 09:30 回复此评论
    没必要更新到 Yosemite,只要把XCODE更新一下就可以了;现在SWIFT编程是混合编程,还不是原生的,好像是把SWIFT转换成OC;可能以后就有原生的框架了,这也是效率没有WWDC说的哪么高的原因
  • 4楼:滔哥 发表于 2014-06-22 20:23 回复此评论
    好熟悉的代码!!!哈哈
  • 5楼:帖子列表 发表于 2014-06-24 10:57 回复此评论
    很有我大php的感觉
  • 6楼:开源中国真理部部长 发表于 2014-06-24 23:04 回复此评论

    引用来自“pengyouya123”的评论

    没必要更新到 Yosemite,只要把XCODE更新一下就可以了;现在SWIFT编程是混合编程,还不是原生的,好像是把SWIFT转换成OC;可能以后就有原生的框架了,这也是效率没有WWDC说的哪么高的原因
    Thx.
  • 7楼:海淀游民 发表于 2014-06-26 16:40 回复此评论

    引用来自“梵蒂冈空军飞行员”的评论

    业余时间还在看语法书,由于依然用的是Maverick,没有更新到Yosemite,所以还没写过一行Swift代码,请教几个问题:
    1. 现在用Swift编写OS X和iOS应用,调用的类库(如你的代码中出现的UIButton等)本质上还是Cocoa和Cocoa-Touch中的Objective-C封装的对么。
    2. 如果是,那么现在Apple有没有提供使用Swift作为原生语言的框架。
    swift就是跑在objc runtime上的,你把它看成一个调objc的脚本语言好了,几年内这个框架也不可能发生变化。
  • 8楼:iman123 发表于 2014-06-26 22:44 回复此评论
    感觉还是没有Object C的代码好看,可能是不熟悉,任何一样新奇的东西既神秘有感觉没熟悉的好。
  • 9楼:已注销用户 发表于 2014-06-27 15:26 回复此评论
    水果好烦
开源从代码分享开始 分享代码
pengyouya123的其它代码 全部(6)...