首页 > 解决方案 > 缺少带有默认参数的声明

问题描述

此代码是否错误,或者这是一个已知问题?

final class Foo {
    //@inlinable @inline(_always)
    static func bar(_ first: String = "default", _ second: Int) {
        print(first,second)
    }
}

Foo.bar(2)

将导致:截屏

标签: swiftdefault-arguments

解决方案


我并不觉得某些评论的方式令人惊讶。必须始终按顺序提供参数。在完全没有标签的情况下,唯一有效的方法是提供第一个参数或两者兼而有之。因此,提供单个参数意味着您需要提供一个字符串。默认值不会更改任何内容。

错误消息像往常一样没有帮助,其他语言的行为可能有所不同,但这并不构成错误。如果有什么可抱怨的,那就是编译器应该警告原始方法声明,因为第一个参数的默认值是 otiose。


推荐阅读