gpt4 book ai didi

swift - Swift 赋值求值无效的原因是什么?

转载 作者:IT王子 更新时间:2023-10-29 05:21:21 30 4
gpt4 key购买 nike

这个问题是关于历史的(不是你目前对此事的看法)。

在阅读关于放弃对 Swift 递增/递减运算符的支持的帖子时,我读到这样的文字“Swift 已经偏离 C,因为 =、+= 和其他类似赋值的操作返回 Void(出于多种原因)”。

因此,在过去的某个时候,开发人员出于某些原因有意识地决定将分配评估为无效。

我正在寻找那些历史(现在)的原因。几乎这个线程是关于 Scala 的历史原因.

最佳答案

至少一个原因是为了在比较操作中更加安全。在用 C、Objective-C 等语言编写时,您写了多少次:

if (x = 2)

代替

if (x == 2)

较新版本的编译器针对上述情况引入了特定的警告,但哇哦,多年来我的代码中缺少一个等号导致难以识别的错误。

对于 Swift 类型系统,这将不是什么问题,因为返回值很可能不符合 BooleanType 协议(protocol),但如果符合 (if x = false),您可能仍然会遇到这些错误。许多 Swift 旨在消除人们遇到的错误的常见原因,包括这个。

这在 Swift Programming Language 一书中有说明,在 "Basic Operators" 下:

Unlike the assignment operator in C and Objective-C, the assignment operator in Swift does not itself return a value. The following statement is not valid:

if x = y {
// this is not valid, because x = y does not return a value
}

This feature prevents the assignment operator (=) from being used by accident when the equal to operator (==) is actually intended. By making if x = y invalid, Swift helps you to avoid these kinds of errors in your code.

关于swift - Swift 赋值求值无效的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34173084/

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