Swift 函数式学习-链式调用

作者: 小黑Swift | 来源:发表于2016-07-31 15:20 被阅读111次

    一般函数调用

            //0.一般函数调用
            var someClosure = {
                (param: String) in
                print(param)
            }       
            someClosure("call some closure")
            // = "call some closure"
    

    链式调用

            //1.链式调用-返回值是函数,并且函数的返回值是调用者本身,可以构成链式调用
            class Home {
                typealias SELF = Home
                var run1:(String) -> SELF {
                    return {
                        print($0)
                        return self
                    }
                }
                
                var run2:(String) -> SELF {
                    return {
                        print($0)
                        return self
                    }
                }
                
                func runrun() {
                    run1("1").run2("2")
                }
            }
            
            Home().runrun() 
             =  /* 
                1
                2
                  */
    

            struct MyFactory {
                var result = 0
                mutating func calculate(closure:(Int) -> Int) -> MyFactory {
                    result = closure(result)
                    return self
                }
            }
            
            class ViewController {
                
                func myClick()  {
                    var calc = MyFactory()
                    let result = calc.calculate {
                        var rs = $0 + 10
                        rs *= 10
                        return rs
                        }.result
                    print(result)
                }
            }
            
            ViewController().myClick() // = 100
    
    主要流向

    参考资料来源:http://valiantcat.com/

    相关文章

      网友评论

      • DanielYQ:我能问一个很傻的问题吗……简书里怎么放代码啊,是用markdown粘贴的唛
        小黑Swift:@DanielYQ 第一 可以直接复制过来再调整下,第二用GFM语法配合手写....等

      本文标题:Swift 函数式学习-链式调用

      本文链接:https://www.haomeiwen.com/subject/xnatsttx.html