来自苹果的文档:
The @dynamicCallable
属性让你可以调用named types
就像你打电话一样
使用简单语法糖的函数。主要用例是动态语言互操作性.
你为什么要使用@dynamicCallable
而不是直接方法?
@dynamicCallable
是 Swift 5 的新功能。来自Paul Hudson 的文章“如何在 Swift 中使用 @dynamicCallable” https://www.hackingwithswift.com/articles/134/how-to-use-dynamiccallable-in-swift(强调我的):
SE-0216 https://github.com/apple/swift-evolution/blob/master/proposals/0216-dynamic-callable.md添加一个新的@dynamicCallable
属性对于斯威夫特来说,
它具有将类型标记为可直接调用的能力。
它是语法糖而不是任何语法糖有点编译器的魔力,有效地转换这段代码:
let result = random(numberOfZeroes: 3)
进入这个:
let result = random.dynamicallyCall(withKeywordArguments: ["numberOfZeroes": 3])
[...] @dynamicCallable
是自然延伸@dynamicMemberLookup
[SE-0195 https://github.com/apple/swift-evolution/blob/master/proposals/0195-dynamic-member-lookup.md],并且服务于相同的目的:
使 Swift 代码更容易与动态语言一起工作,例如
如 Python 和 JavaScript。 [...]@dynamicCallable
对于哪些数据非常灵活
类型其方法接受和返回,让您受益于所有
Swift 的类型安全性,同时仍有一些回旋余地
高级用法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)