ios - Swift 元类型不一致

标签 ios swift introspection metatype

给定以下代码...

protocol MyProtocol {}
enum MyEnum: MyProtocol {}
struct MyStruct: MyProtocol {}
class MyClass: MyProtocol {}
func MyFunction(parameter: MyProtocol.Type) -> String {
    return "Hi"
}

为什么我必须在分配变量时使用 .self...

var variable: MyProtocol.Type = MyStruct.self

而不是当我将元类型作为函数参数传递时?

var result = MyFunction(MyStruct)

最佳答案

它看起来像是一个编译器错误。我个人觉得 .self 应该包含在函数参数中。

然而,一旦 Swift 的源代码在今年晚些时候发布,可能会有更好的解释。同时,您可以归档雷达。

编辑:如果 Class.Type 是唯一的函数参数,它似乎会删除 .self 要求。 Swift leave out .self to invoke a function which needs metatype?

关于ios - Swift 元类型不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501973/

相关文章:

ios - 是否可以在 ARKit 中隐藏特征点?

ios - 添加 UITapGestureRecognizer 时 UIImageView 崩溃

ios - 选项卡栏图标除第一个图标外均已加载。在模拟器中工作。 Objective-c

ios - 如何快速检测正在编辑哪个 TextView

ios - Swift 2.2 和 2.3 互操作性

swift - Pod lib lint 错误 : Warn Swift Version

swift - 确定 Swift 类的类型

ios - 从分离的 UITableView 推送/呈现 ViewController

python - 获取函数的关键字参数,Python

Python 自省(introspection) : access function name and docstring inside function definition