我在一个我正在剖析的项目中遇到了这个String扩展,我不知道为什么String初始化器在在线3上工作。
fileprivate extension String {
init(integer n: Int, radix: Int, padding: Int) {
let s = String(n, radix: radix)
let pad = (padding - s.count % padding) % padding
self = Array(repeating: "0", count: pad).joined(separator: "") + s
}
}let s = String(n, radix: radix)
以下是文档中的初始化器:
https://developer.apple.com/documentation/swift/string/2997127-init
但是这个init的签名是init(_:radix:uppercase:)。然而,页面底部的示例使用init(_:radix:)签名。这怎麽可能?
发布于 2020-02-22 18:59:54
Xcode中的“跳转到定义”显示该方法声明为
public init<T>(_ value: T, radix: Int = 10, uppercase: Bool = false) where T : BinaryInteger即uppercase参数有一个缺省参数值
您可以为函数中的任何参数定义默认值,方法是在该参数的类型之后为该参数指定一个值。如果定义了默认值,则可以在调用函数时省略该参数。
这里的默认值是false,所以
let s = String(n, radix: radix)等于调用
let s = String(n, radix: radix, uppercase: false)https://stackoverflow.com/questions/60355515
复制相似问题