7.4 Swift原始值fromRaw方法

来源:互联网 发布:呼死你淘宝搜索什么 编辑:程序博客网 时间:2024/06/07 16:05

        enum Method2:String {

            case Add ="addStr"

            case Sub ="subStr"

            case Mul ="mulStr"

            case Div ="divStr"

        }

        

        print("--------------->")

        // 老版本中是

//        Method2.Div.toRaw()

        print(Method2.Div.rawValue)

        


        print("--------------->")

        // 这里是可选类型

        

        

//        let op1 = Method2.RawValue("Add")

//        print(op1)

//        let op2 = Method2.RawValue("add")

//        print(op2!)


        

        print("--------------->")

        // 老版本中是

        //        Method2.fromRaw("add")

        let m1 =Method2(rawValue: "add")

        print(m1)


        let m2 =Method2(rawValue: "addStr")

        print("--------->")

        print(m2)

        print(m2!)


        

        

        func chooseMethod(op:String) -> (Double,Double)-> Double {

            

            //  由于返回是可选类型,所以有可能为nil,最好使用可选绑定

            iflet rawop = Method2(rawValue: op) {

                

                switch rawop  {

                case .Add:

                    func add(a:Double, b:Double) ->Double {

                        return a + b

                    }

                    returnadd

                case .Sub:

                    // 返回一个闭包

                    return { (a:Double, b: Double) ->Double inreturn a - b }

                case .Mul:

                    // 返回一个闭包,省略闭包类型

                    return {return $0 * $1 }

                case .Div:

                    // 返回一个闭包,return也省略掉

                    return { $0 / $1 }

                    

                default:

                    return { $0 + $1 }

                }

                

            }

            return { $0 + $1 }

           

        }

        

        

        

        let val =chooseMethod(op: "addStr")(30,7)

        print("--------->")

        print(val)


0 0
原创粉丝点击