1. ホーム
  2. swift

[解決済み] 演算子「++」と「--」が非推奨に Xcode 7.3

2022-05-10 23:58:13

質問

Xcode 7.3のノートを見ていて、この問題に気がつきました。

演算子 ++ と -- は非推奨となりました。

なぜ非推奨になったのか、どなたか説明してください。そして、Xcodeの新しいバージョンでは、代わりに ++ この x += 1 ;

for var index = 0; index < 3; index += 1 {
    print("index is \(index)")
}

解決方法は?

A 詳しい説明はこちら Swiftの生みの親であるChris Lattner氏から。ポイントをまとめておきます。

  1. Swiftを学ぶ上で、もう一つ覚えなくてはならない機能です。
  2. よりもはるかに短い x += 1
  3. SwiftはC言語ではない。C言語プログラマーを喜ばせるために、それらを持ち越すべきではありません。
  4. 主な用途はC言語式のforループです。 for i = 0; i < n; i++ { ... } のように、Swift にはより良い代替手段があります。 for i in 0..<n { ... } (C言語のfor loopは も出て行く )
  5. の値は何なのか? x - ++x または foo(++x, x++) ?
  6. クリス・ラトナーが嫌がる。

興味のある方のために(そしてリンク腐敗を避けるために)、ラトナー氏の理由を彼自身の言葉で説明します。

<ブロッククオート
  1. これらの演算子は、最初のプログラミング言語としてSwiftを学習する負担を増加させます。

  2. x++ は x += 1 よりも短くない。

  3. Swiftは、=、+=や他の割り当てのような操作がVoidを返すという点で、すでにCから逸脱しています(多くの理由のために)。これらの演算子は、そのモデルと矛盾しています。

  4. Swift には、他の言語で C スタイルの for ループで ++i を使用する一般的な理由の多くを排除する強力な機能があるので、これらはよく書かれた Swift のコードで比較的頻繁に使用されています。これらの機能は、for-inループ、範囲、enumerate、mapなどを含みます。

  5. これらの演算子の結果値を実際に使用するコードは、コードの読者や管理者にとって、しばしば混乱し、微妙なものとなります。これらの演算子は、かわいいけれども理解するのが難しい、過度にトリッキーなコードを推奨しています。

  6. Swift は評価の順序をよく定義していますが、それに依存するコード (foo(++a, a++) のような) は、それがよく定義されていたとしても、望ましくないでしょう。

  7. これらの演算子は、整数と浮動小数点スカラー、およびイテレータのような概念という、比較的少数の型に適用されます。複素数や行列などには適用されません。

最後に、これらは、"もし私たちがまだこれらを持っていなかったら、Swift 3にそれらを追加しますか?"のメトリックに失敗します。