此代码是错误的,还是已知问题?
final class Foo {
//@inlinable @inline(_always)
static func bar(_ first: String = "default", _ second: Int) {
print(first,second)
}
}
Foo.bar(2)
答案 0 :(得分:4)
我不觉得这与某些评论一样令人惊讶。必须始终按顺序提供参数。在完全没有标签的情况下,唯一有效的方法是提供第一个参数或同时提供两个参数。因此,仅提供一个参数就意味着您需要提供一个字符串。默认值没有任何改变。
该错误消息与往常一样无济于事,其他语言的行为可能有所不同,但这并不构成错误。如果有什么可抱怨的地方,那就是编译器应该警告原始方法声明,因为第一个参数的默认值是简单的。
答案 1 :(得分:1)
我不会说这是一个错误,更可能是它的功能。这段代码闻起来真是糟糕的代码风格...
Int
分配给String
...我不会感到惊讶现在,我不想“教育”您如何编写漂亮的代码,但是您上面发布的示例确实不是。不用标签写函数不是很直观,这就是为什么我们应该使用标签的完美例子... Swift社区建议的写函数的功能真棒...
final class Foo {
//@inlinable @inline(_always)
static func bar(first: String = "default", second: Int) {
print(first,second)
}
}
Foo.bar(second: 2)
为什么不只删除下划线? :)