swift - 了解 swift 中的转换规则

标签 swift

我刚刚通读了 Apple 的 Swift 书籍,对隐式转换有点困惑。 在一个例子中是这样的:

let mynum: Float = 4

然后紧跟着它说:“值永远不会隐式转换为另一种类型。”

这是怎么回事?他们只是将 Int 文字隐式转换为 Float 然后他们说值永远不会被隐式转换?谁能解释这里的规则/异常(exception)是什么?

最佳答案

4 不是“值”。这是一个字面意思。所以它可以被 Swift 喜欢的任何方式解释。没有什么可以“转换”;它用于创建值,但创建的值将是一个 Float,因为这正是您所要求的。

但现在试试这个:

let i : Int = 4
let mynum: Float = i

糟糕。

换句话说:

let mynum: Float = 4

解释

let mynum = Float(4) // we are _creating_ the value

但如果我们从 i 开始,必须创建值:

let i : Int = 4
let mynum: Float = Float(i)

Swift 不会为你做这些。

奖励类(class)拿着我的啤酒看这个:

struct Dog : IntegerLiteralConvertible {
    var number : Int?
    init(integerLiteral: Int) {
        self.number = integerLiteral
    }
}
let dog : Dog = 42

Float 有点像这样。

关于swift - 了解 swift 中的转换规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518617/

相关文章:

ios - 使用 UIButton 在三种状态之间切换

ios - 向左滑动 uitableViewCell 时将 tableView Item 保存为默认值

ios - UINavigationBar.apperance().titleTextAttributes 不能快速工作

swift - 如何在主屏幕之前设置首次登录 View Controller

ios - UIImageView图像出现两次

class - swift ios 委托(delegate)在多个类中同时运行

ios - 将滚动 Controller 添加到 CollectionView

ios - 如何快速制作我自己的语法糖?

json - 使用 Codable 解析嵌套的 JSON,如 ObjectMapper Swift 4

SwiftUI 视频播放器如何设置 url