美文网首页码农的世界学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