gpt4 book ai didi

ios - 不一致的快速行为

转载 作者:搜寻专家 更新时间:2023-11-01 06:20:57 25 4
gpt4 key购买 nike

我是 Swift 新手。

我有以下代码

class ViewController: UIViewController {

let var1: Double = 0.0
let var2: Int = 0

override func viewDidLoad() {
super.viewDidLoad()
let someObject = TestViewController(x: 20, total: 30, taxPact: 40, subtotal: 50)
var x = 1 + 1.0 /* COMPILER IS FINE WITH ADDING INT AND DOUBLE */
print("sum is \(var1 + var2)") /* COMPILER COMPLAINS HERE BINARY OPERATOR + CANNOT BE APPLIED */
}

为什么我们会看到这种不一致的行为?

最佳答案

报错信息与字符串插值无关,这个

let var1: Double = 0.0
let var2: Int = 0
var x = var1 + var2 // error: binary operator '+' cannot be applied to operands of type 'Double' and 'Int'

也不编译,原因是没有+Int 添加到 Double 和Swift 不会隐式转换类型。你必须明确地转换,例如

var x = var1 + Double(var2)
print("sum is \(var1 + Double(var2))")

你的其他声明

var x = 1 + 1.0

编译是因为 IntDouble (以及更多类型)符合 IntegerLiteralConvertible 协议(protocol),所以 literal 1 可以是 Int 文字和一个 Double 文字。这里编译器选择 1 作为一个Double 因为这是唯一适合的选择+ 运算符存在。

关于ios - 不一致的快速行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com