我尝试查看用于Int的Swift API,但仍然不确定为什么可以使用:
var foo = Int("100")
我在文档中看到以下初始化程序:
init() init(_: Builtin.Word) init(_: Double) init(_: Float) init(_: Int) init(_: Int16) init(_: Int32) init(_: Int64) init(_: Int8) init(_: UInt) init(_: UInt16) init(_: UInt32) init(_: UInt64) init(_: UInt8) init(_:radix:) init(_builtinIntegerLiteral:) init(bigEndian:) init(bitPattern:) init(integerLiteral:) init(littleEndian:) init(truncatingBitPattern: Int64) init(truncatingBitPattern: UInt64)
但我看不到init(_: String)上面。引擎盖下是否有一些自动魔术?
init(_: String)
有一个
extension Int { /// Construct from an ASCII representation in the given `radix`. /// /// If `text` does not match the regular expression /// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` /// is not representable, the result is `nil`. public init?(_ text: String, radix: Int = default) }
扩展方法,该方法采用字符串和可选的基数(默认为10):
var foo = Int("100") // Optional(100) var bar = Int("100", radix: 2) // Optional(4) var baz = Int("44", radix: 3) // nil
_怎么会找到那个?_对没有外部参数名称的方法使用[“跳转到定义”中的“技巧” ,编写等效代码
var foo = Int.init("100") // ^^^^
然后- 在Xcode中cmd单击init:)
cmd
init