[解決済み] 演算子「++」と「--」が非推奨に Xcode 7.3
質問
Xcode 7.3のノートを見ていて、この問題に気がつきました。
演算子 ++ と -- は非推奨となりました。
なぜ非推奨になったのか、どなたか説明してください。そして、Xcodeの新しいバージョンでは、代わりに
++
この
x += 1
;
例
for var index = 0; index < 3; index += 1 {
print("index is \(index)")
}
解決方法は?
A 詳しい説明はこちら Swiftの生みの親であるChris Lattner氏から。ポイントをまとめておきます。
- Swiftを学ぶ上で、もう一つ覚えなくてはならない機能です。
-
よりもはるかに短い
x += 1
- SwiftはC言語ではない。C言語プログラマーを喜ばせるために、それらを持ち越すべきではありません。
-
主な用途はC言語式のforループです。
for i = 0; i < n; i++ { ... }
のように、Swift にはより良い代替手段があります。for i in 0..<n { ... }
(C言語のfor loopは も出て行く ) -
の値は何なのか?
x - ++x
またはfoo(++x, x++)
? - クリス・ラトナーが嫌がる。
興味のある方のために(そしてリンク腐敗を避けるために)、ラトナー氏の理由を彼自身の言葉で説明します。
<ブロッククオート-
これらの演算子は、最初のプログラミング言語としてSwiftを学習する負担を増加させます。
-
x++ は x += 1 よりも短くない。
-
Swiftは、=、+=や他の割り当てのような操作がVoidを返すという点で、すでにCから逸脱しています(多くの理由のために)。これらの演算子は、そのモデルと矛盾しています。
-
Swift には、他の言語で C スタイルの for ループで ++i を使用する一般的な理由の多くを排除する強力な機能があるので、これらはよく書かれた Swift のコードで比較的頻繁に使用されています。これらの機能は、for-inループ、範囲、enumerate、mapなどを含みます。
-
これらの演算子の結果値を実際に使用するコードは、コードの読者や管理者にとって、しばしば混乱し、微妙なものとなります。これらの演算子は、かわいいけれども理解するのが難しい、過度にトリッキーなコードを推奨しています。
-
Swift は評価の順序をよく定義していますが、それに依存するコード (foo(++a, a++) のような) は、それがよく定義されていたとしても、望ましくないでしょう。
-
これらの演算子は、整数と浮動小数点スカラー、およびイテレータのような概念という、比較的少数の型に適用されます。複素数や行列などには適用されません。
最後に、これらは、"もし私たちがまだこれらを持っていなかったら、Swift 3にそれらを追加しますか?"のメトリックに失敗します。
関連
-
[解決済み] Swift - 呼出しの余分な引数
-
[解決済み] Pythonにおけるincrementとdecrement演算子の挙動
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
-
[解決済み】weak referenceとunowned referenceの違いは何ですか?
-
[解決済み】解決方法。iOS 13.0で'keyWindow'が非推奨になりました。
-
[解決済み】Swiftの列挙型と関連する値の等質性をテストする方法
-
[解決済み】ReactiveCocoaとRxSwiftの比較 - 長所と短所?
-
[解決済み】UIViewControllerの最上位機種を取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swift 3、Swift 4、それ以降で dispatch_sync, dispatch_async, dispatch_after などはどうすればいいですか?
-
[解決済み] SwiftはPass By ValueかPass By Referenceか
-
[解決済み] swiftの"? "の意味は何ですか?[重複している]。
-
[解決済み] SwiftでString.Indexはどのように動作するのか
-
[解決済み] Swiftベースのアプリケーションは、OS X 10.9/iOS 7以下でも動作しますか?
-
[解決済み] String型のenumを列挙する方法は?
-
[解決済み】Swift 4でStringのsubstringを使うには?'substring(to:)'は非推奨です。部分的な範囲から'演算子を持つ文字列スライス添字を使用してください。
-
[解決済み】Swift - StringをDoubleに変換する方法
-
[解決済み】Swiftはドキュメント生成に対応しているのか?
-
[解決済み】プログラムによってナビゲーションのタイトルを変更する