【发布时间】:2015-10-31 02:21:11
【问题描述】:
这是我写的代码:
func printType<T: Any>(one: T.Type) {
print(one)
}
func printType2<T: Any>(one: T.Type, name: String) {
print(one)
}
printType(Set<Int>)
printType2(Set<Int>.self, name: "name")
我想知道为什么printType(Set<Int>) 可以工作。在printType2(Set<Int>.self, name: "name") 中,我不能省略 .self 以使其工作。
编辑:
我想知道当我可以省略 .self 时意味着哪条规则。我曾尝试在 Apple 官方参考资料中找到它,但失败了。
编辑:
我在 Xcode 版本 7.1 (7B91b) 中测试代码。
【问题讨论】:
-
除了“这就是语言当前的工作方式”之外,我不确定这里还有很多话要说。如果是唯一参数,则可以省略
.self。 -
这就像问为什么美式足球场有 100 码长。这是因为足球就是这样运作的。
-
@jtbandes 但我认为它不应该省略 .self,它只是在 swift 中没有意义,我还没有发现任何规则可以解释它(参考)。
-
在我看来像一个编译器错误。
标签: swift