少なくとも1つの理由は、比較操作においてより安全であることです。コンパイラの
if (x = 2)
代わりの
if (x == 2)
新しいバージョンは、上記の場合の具体的な警告を導入している、しかし:あなたがこれを書いた回数、C、Objective-Cの、などに書き込むとき私のコードでは何年もの間にバグを識別するのが困難でした。
スウィフトタイプのシステムでは、返される値がBooleanTypeプロトコルに準拠していない可能性が高いため、これは問題ではありませんが、(if x = false
)の場合でも、これらのバグが発生する可能性があります。多くのSwiftは、これを含め、人々が遭遇したバグの共通原因を取り除くように設計されています。
これはスウィフトプログラミング言語の本に記載されている、"Basic Operators"下:CとObjective-Cの代入演算子とは異なり
、スウィフトの代入 オペレータは、それ自体が値を返しません。次 文は有効ではありません。
if x = y {
// this is not valid, because x = y does not return a value
}
この機能は、演算子(==)に等しいが、実際に意図されている場合 事故によって使用されているから、代入演算子(=)を防ぐことができます。 x = yが無効な場合、Swiftはこの種の エラーをコード内で回避するのに役立ちます。
インクリメント/デクリメントのサポートを中止する方法についての記事へのリンクを提供してください。私はそれを読むことに興味があります。 – FreeNickname
@FreeNickname、確かに、見てください:https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md – greenoldman
Cで何かを使うことができますlike if i = 1 {}。代入の結果は、使用できる値を返します。迅速なそのようなステートメントはコンパイルされませんし、理由(私はそう思う)は、望ましくない副作用を避けることです。私はこのアイデアに同意することができます。反対側の私は実際には見えません。なぜ++ i、i ++。 --i、i--は言語から削除する必要があります。少なくとも2回は記事を読んでいて、それはまだ私には分かりません。 – user3441734