您的位置:首页 > 移动开发 > IOS开发

IOS- 笔记2(闭包应用例)

2015-08-16 15:59 369 查看
<span style="font-size:10px;">@IBActionfunc operate(sender:UIButton) {
        let operation=sender.currentTitle!
        if !firstType{
            enter()
        }
        switch operation{
        case "✕" :performOperation(multiply)//这是最笨的方法
        case"÷" :performOperation({(op1:Double,op2:Double)->Doubleinreturn op2/op1})//closure
        case"+" :performOperation({(op1,op2)inreturn op1+op2})//函数声明中有两个参数的类型,所以可以省略
                //performOperation({(op1,op2) in op1+op2})       //因为函数声明中有声明返回值类型,可以省略return关键字
                //performOperation({$0+$1})                     //你也可以不给变量命名,swift自动命名为$0,$1,$2...
                //performOperation() {$0+$1}          //如果你的函数是像这样有一个函数作为参数,且这个参数位于最后一个,那么可以将这个函数移到括号外面,其他参数还在括号里
                //performOperation {$0+$1}                  //如果只有这一个参数,那么括号也不需要了
        case"-" :performOperation {$1-$0}
        case"⌥" :performOperation {sqrt($0)}
        default: break
        }
    }
    func performOperation(operation:(Double,Double) ->Double){
        ifoperandStack.count >=2 {
           displayValue=operation(operandStack.removeLast(),operandStack.removeLast())
            enter()
        }
    }
    privatefunc performOperation(operation:Double ->Double){
        ifoperandStack.count >=1 {
            displayValue=operation(operandStack.removeLast())
            enter()
        }
    }
    func multiply(op1:Double,op2:Double)->Double{
        return op1*op2
    }</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: