美文网首页码农的世界学Swift挣美金IOS
Swift的野心成为可以任性打Call的语言(Swift 5新特

Swift的野心成为可以任性打Call的语言(Swift 5新特

作者: iCloudEnd | 来源:发表于2019-03-27 12:35 被阅读26次

    Swift的野心成为可以任性打Call的语言(新特性@dynamicCallable)

    Swift 新特性@dynamicCallable

    众所周知,Swift由于出身名门,因此天生就可以与C、C++和Objective-C无缝对接。Swift未来的规划是能够与Python、JavaScript、Perl和ruby等语言实现融合调用。Swift社区为此研究了很多的方案,目前他们认为hooks方式可能是最好的方案。

    为了逐步实现上面提到目标,Swift 5.0新增了@dynamicCallable属性。@dynamicCallable属性属于语法糖类型(语法糖是指某一属性带来的语义上的优势多于功能上的)。

    @dynamicCallable作用是让我们可以像调用函数一样去调用的类型。下面的代码

    @dynamicCallable struct ToyCallable {
        func dynamicallyCall(withArguments: [Int]) {}
        func dynamicallyCall(withKeywordArguments: KeyValuePairs<String, Int>) {}
    }
    
    let x = ToyCallable()
    
    x(1, 2, 3)
    // 编译器会翻译为 `x.dynamicallyCall(withArguments: [1, 2, 3])`
    
    x(label: 1, 2)
    // 编译器会翻译为 `x.dynamicallyCall(withKeywordArguments: ["label": 1, "": 2])`
    

    相关文章

      网友评论

        本文标题:Swift的野心成为可以任性打Call的语言(Swift 5新特

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