【发布时间】:2016-03-14 09:18:56
【问题描述】:
这个问题是关于HISTORY(不是你目前对此事的看法)。
在阅读有关放弃对 Swift 的递增/递减运算符的支持的文章时,我读到了这样的文本“Swift 已经偏离了 C,因为 =、+= 和其他类似赋值的操作返回 Void(出于多种原因)”。
所以在过去的某个时候,开发人员出于某些原因有意识地决定评估分配为无效。
我正在寻找那些历史(现在)的原因。几乎就像这个线程是关于Scala 的历史原因一样。
【问题讨论】:
-
您能否提供有关放弃对增量/减量的支持的文章的链接?我有兴趣阅读它。
-
@FreeNickname,当然,看看:github.com/apple/swift-evolution/blob/master/proposals/…
-
在 C 中你可以使用 if i=1 {} 之类的东西。赋值的结果返回您可以使用的值。很快,这样的语句将无法编译,原因(我认为是这样)是为了避免不必要的副作用。我可以同意这个想法,另一方面我真的不明白,为什么要++i,i++。 --i, i-- 应该从语言中删除。我至少读了两遍这篇文章,但对我来说仍然不是很清楚。
-
@user3441734,这可能是原因,但我认为不是。因为在 Swift 中,
if只接受布尔表达式,如果我没记错的话。所以即使i = 1返回if,if i = 1 {}也不会编译,因为在Swift 中1不是布尔值。 @greenoldman,谢谢你的链接) -
我不能专门谈论 Swift,但有些人认为使用表达式来表示它的值和副作用是一种不好的做法,因为这样的代码很难理解。它还可能导致像
i = ++i + i++;这样的代码,在 C 和 C++ 中具有未定义的行为。
标签: swift language-design assignment-operator