缺少带有默认参数的声明
Missing declaration with default argument
这段代码是错误的,还是已知问题?
final class Foo {
//@inlinable @inline(_always)
static func bar(_ first: String = "default", _ second: Int) {
print(first,second)
}
}
Foo.bar(2)
结果:
我并不觉得某些评论的方式令人惊讶。必须始终按顺序提供参数。在完全没有标签的情况下,唯一有效的方法是提供第一个参数或两者。因此,提供单个参数意味着您需要提供一个字符串。默认值不会改变任何这些。
该错误消息与往常一样无用,其他语言的行为可能有所不同,但这不构成错误。如果有什么可抱怨的,那就是编译器应该对原始方法声明发出警告,因为第一个参数的默认值是多余的。
我不会说这是一个错误,更可能是一个功能。这段代码闻起来真的很糟糕...
- 您没有指定参数的名称,这可能会导致非常糟糕的事情并将
Int
分配给 String
...我不会感到惊讶
现在我不想 "educate" 你如何编写漂亮的代码,但你上面发布的示例确实不是。编写没有标签的函数不是很直观,这是为什么我们应该使用标签的完美示例...按照 Swift 社区的建议编写函数非常棒...
final class Foo {
//@inlinable @inline(_always)
static func bar(first: String = "default", second: Int) {
print(first,second)
}
}
Foo.bar(second: 2)
为什么不直接省略下划线呢? :)
这段代码是错误的,还是已知问题?
final class Foo {
//@inlinable @inline(_always)
static func bar(_ first: String = "default", _ second: Int) {
print(first,second)
}
}
Foo.bar(2)
结果:
我并不觉得某些评论的方式令人惊讶。必须始终按顺序提供参数。在完全没有标签的情况下,唯一有效的方法是提供第一个参数或两者。因此,提供单个参数意味着您需要提供一个字符串。默认值不会改变任何这些。
该错误消息与往常一样无用,其他语言的行为可能有所不同,但这不构成错误。如果有什么可抱怨的,那就是编译器应该对原始方法声明发出警告,因为第一个参数的默认值是多余的。
我不会说这是一个错误,更可能是一个功能。这段代码闻起来真的很糟糕...
- 您没有指定参数的名称,这可能会导致非常糟糕的事情并将
Int
分配给String
...我不会感到惊讶
现在我不想 "educate" 你如何编写漂亮的代码,但你上面发布的示例确实不是。编写没有标签的函数不是很直观,这是为什么我们应该使用标签的完美示例...按照 Swift 社区的建议编写函数非常棒...
final class Foo {
//@inlinable @inline(_always)
static func bar(first: String = "default", second: Int) {
print(first,second)
}
}
Foo.bar(second: 2)
为什么不直接省略下划线呢? :)