【发布时间】:2018-10-11 08:39:14
【问题描述】:
此代码是否错误,或者这是一个已知问题?
final class Foo {
//@inlinable @inline(_always)
static func bar(_ first: String = "default", _ second: Int) {
print(first,second)
}
}
Foo.bar(2)
【问题讨论】:
-
这对我来说似乎是一个错误。如果将参数标签添加到
static func bar(_ first: String = "default",second: Int)或static func bar(first: String = "default",_ second: Int)等两个参数中的任何一个,它就可以正常编译。但是,编译器应该仍然能够推断出您要调用没有参数标签的默认参数,因为输入参数具有不同的类型。顺便说一句,Swift 的命名约定是类型的 UpperCamelCase,因此该类应称为Foo。 -
解决方法?我不认为有一个......它是一个错误......提供两个参数
-
是的,您的问题没有任何问题,它也可以帮助遇到同样问题的其他人。
-
您可以尝试在forums.swift.org/c/swift-users上提问,也许这是一个已知问题。
-
@DávidPásztor 我的意思是:使用这种声明
func test (_ first: String = "world", _ second: String = "!") { print(first, second) },您不能传递单个参数,并期望它转到second。对于没有外部标签的多个连续参数,必须先将值提供给第一个参数,然后再提供后面的参数。