首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么字符串(_:radix:)初始化器工作?

为什么字符串(_:radix:)初始化器工作?
EN

Stack Overflow用户
提问于 2020-02-22 18:41:32
回答 1查看 301关注 0票数 0

我在一个我正在剖析的项目中遇到了这个String扩展,我不知道为什么String初始化器在在线3上工作。

代码语言:javascript
复制
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:)签名。这怎麽可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-22 18:59:54

Xcode中的“跳转到定义”显示该方法声明为

代码语言:javascript
复制
public init<T>(_ value: T, radix: Int = 10, uppercase: Bool = false) where T : BinaryInteger

uppercase参数有一个缺省参数值

您可以为函数中的任何参数定义默认值,方法是在该参数的类型之后为该参数指定一个值。如果定义了默认值,则可以在调用函数时省略该参数。

这里的默认值是false,所以

代码语言:javascript
复制
let s = String(n, radix: radix)

等于调用

代码语言:javascript
复制
let s = String(n, radix: radix, uppercase: false)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60355515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档