当前位置: 首页 > 面试题库 >

在Swift中,Int是否具有采用String的隐藏初始化器?

谭翰海
2023-03-14
问题内容

我尝试查看用于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)上面。引擎盖下是否有一些自动魔术?


问题答案:

有一个

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:)



 类似资料:
  • Swift 5.x String初始化、定义 1. 字面量初始化字符串 1.1 单行字面量字符串 let str = "some string" 1.2 字面量初始化多行字符串 let str = """ The white Rabbit put on his spectacles. "Where shell I begin, please your Majesty?" he asked. "

  • 问题内容: 我可以使用字符串插值或String初始值设定项将int,float,double读取为字符串。结果总是一样的。 结果是一样的。d的值为“ 2e” 我发现的唯一区别是,字符串插值()可以在双引号内使用,而String()不能在双引号内使用。 这就是全部?我在这里想念什么吗? 问题答案: 字符串插值为您提供了调用该项目的结果。 调用初始化程序并返回一个值,该值通常与从字符串插值中获得的值相

  • 在编写一个新的swift类时,当(不)使用隐式展开选项而不仅仅是普通选项时,我仍然不是100%舒服。据我所知,如果你从来没有期望它的值为零,那么把它指定为隐式未包装(可选)应该是可以的。如果为nil,则为异常事件,应导致运行时错误。 例如,这个简单的登录视图包含两个text field成员变量: 在上面的类中,emailField和passField都被归类为隐式展开选项,因为我从来没有期望它们在

  • 问题内容: 题 苹果的文档指定: 首次初始化属性时,不会调用willSet和didSet观察器。仅当在初始化上下文之外设置属性的值时才调用它们。 是否可以强制在初始化期间调用它们? 为什么? 假设我有这堂课 我创建了method ,以使处理调用更简洁,但我只想处理函数中的属性。有没有办法在初始化过程中强制此调用? 更新资料 我决定只为我的类删除便捷的初始化器,并强迫您在初始化后设置属性。这使我知道

  • 问题内容: 我正在跟踪Swift和Objective-C Runtime,它适用于常规方法。 我喜欢使用init方法,据我了解,init就像一个类方法。因此,我尝试将初始化作为实例和类方法。但这似乎不起作用 我可以使用Objective C使其工作,只是想知道如何在Swift中使其工作 摘录自我的要旨 问题答案: 为方法创建选择器时,应使用Obj C方法签名作为选择器的基础,因为使用Obj C运行

  • 问题内容: 我这里有一个与Java有关的简单问题。假设您有一个int数组作为实例变量: 因此,现在默认情况下它包含5个零。但是,如果您具有与局部变量相同的数组,该怎么办。它是否初始化为零?那不是家庭作业,我正在学习Java语言。最好的祝福 问题答案: 首先 要了解的是, 局部变量 存储在 堆栈中 ,它们没有使用其默认值进行显式初始化。尽管 实例变量 存储在 Heap上 ,并且默认情况下会使用 默认