' if let'を否定する方法Swift言語での条件付きチェック


ベストアンサー

guardは、早期終了が必要なため、常に使用できるとは限りません。否定されたif let構文はありませんが、コードスニペットは、最も見逃された興味深いケースを実際には示していません。

コードが本当に必要ない場合date ifの後に、if letを使用する必要はありません。テストするだけです。式がnilの場合(関連性と簡潔さのためにコードをSwift3風の構文に簡略化したことに注意してください):

if UserDefaults.standard.objectForKey("first\_launch\_date") == nil {

UserDefaults.standard.set(date, forKey: "first\_launch\_date")

}

ただし、コードがifの後にdateを使用するには(そうでない場合は、なぜ名前を付けるのですか)、もう少し厄介なものが必要になります。結局のところ、ifの場合は次のようになります:

let date: Date

if let existingDate = UserDefaults.standard.objectForKey("first\_launch\_date") {

date = existingDate

} else {

date = Date()

UserDefaults.standard.set(date, forKey: "first\_launch\_date")

}

本当にがっかりするケースただし、私はelse ifのチェーンでif letを使用している場合です。多くの場合(半分の時間に近いですか?)、一連の条件のロジックは、一連のネガティブをテストして、elseケースが1つのポジティブ条件になることを望んでいます。ただし、条件の1つでif letが必要な場合は、論理を正のテストとして表現する必要があり、それ以外の場合は負になります。

擬似コードの例:

if error {

failure

} else if unexpected-format {

failure

} else if parse-failed {

failure

} else if result is a {

handle result a

} else {

handle result b

}

これをswiftで実装する場合、if let result = parse()のように、解析テスト中にオプションのラップを解除する必要があります。ロジックをfail-fail-successからfail-success-failにワープする必要があります。より高速な擬似コードの例:

if error {

failure

} else if unexpected-format {

failure

} else if let result = parse() {

if result is a {

handle result a

} else {

handle result b

}

} else {

failure

}

うん。潜在的にif not letは、元のロジックを許可します:

if error {

failure

} else if unexpected-format {

failure

} else if not let result = parse() {

failure // unlike if let, result not available to this code block

} else if result is a { // however it would be to everything after

handle result a

} else {

handle result b

}

誰かが迅速な進化のための提案を書く必要があります。

回答

  1. 無料のAppleDeveloperアカウントにサインアップ
  2. 本日(2016年6月4日)の時点で理解Swift 3.0は公開されるため、チュートリアルはありません。来週のWWDCで。著者がSwift3.0の新しい本やチュートリアルを準備するには、少なくとも3か月かかります。例外は、Erica Sadunで、彼女の本を最新バージョンのSwiftに移行することに非常に熱心で積極的です。
  3. {New}本日(2016年6月13日)、AppleはiPADのPlaygroundsを発表しました。これは、初心者がSwiftを学ぶのに非常に良い方法のようです。また、Appleには\_App Development with Swift\_という新しい電子書籍があります。これは言語初心者にとってもう1つの優れたリソースです。
  4. Swift 1.0では何も避け、ほとんどの人から離れてください。 2.0および2.1に関する情報を入手し、Swiftのバージョン2.2以降のソースから情報を見つけてください。また、2015年11月より前の最新情報を含む資料は避けてください。これは、Swift3.0が利用可能になってから数か月後に変更されます。構文とライブラリが大幅に変更されており、古いバージョンで記述されたチュートリアルに従うのは難しい場合があります。
  5. iBooksからAppleのSwiftマニュアルのコピーを入手してください。これらはSwift3.0で最初に最新のものになるはずです
  6. これらのマニュアルを参照してください
  7. 以前に他の言語でプログラミングしたことがある場合は、AppleやサードパーティなどのSwift固有の構成にさらに注意してください。ソフトウェアの例でそれらを使用する可能性があります。
  8. 列挙
  9. オプション
  10. エラーチェック
  11. クロージャ(構文とconc eatは把握が難しい場合があります)
  12. 構造体vs.クラスvs.プロトコルvs.列挙型
  13. プロトコル指向の設計
  14. 参照カウント
  15. 文字列
  16. ジェネリックス
  17. Swiftライブラリ
  18. 言語の機能的側面(クロージャとライブラリに関連)
  19. Swiftで1〜2個のeBook(または物理的な本)を参照および/または購入します。良い本がいくつかあります。
  20. iOSとMacOSのどちらをプログラマーにするかを期待して書かれた情報やチュートリアルがたくさんあります
  21. ゲームや生産性にもっと興味があるかどうかを判断してくださいそしてそれらの1つにもっと集中します。いくつかの本や、ゲームの駆け落ちのために書かれたチュートリアルがあり、いくつかの点で、ゲームは学ぶのが簡単だと思います。
  22. Appleアプリケーションを書いたことがない場合は、心配せずにSwiftを学ぶことをお勧めします。 Objective-Cについての多く。免責事項:Objective-Cは非常に嫌いです。 Objective-Cにレガシーコードがある場合は、Objective-CとSwiftのブリッジングと相互使用について必ず学んでください。 Swiftチュートリアルは、知っておくべきことの基礎を提供します。多くの/ほとんどのCocoaライブラリ/フレームワークはすべてObjective-Cで記述されているため、完全に回避することはできません。
  23. クレジットカードをお持ちの場合またはペイパル、 Lyndaでサインアップしてください。 com を1か月間無料で視聴し、SwiftでSimon Allardiceや他の人からのすべてのビデオを視聴できます(必要に応じて一般的なプログラミングの概念もご覧ください)。
  24. 複数のサイト。 com
  25. Apple Deveサイトを参照して、すべてのリファレンスドキュメントと、x-Codeからこれにアクセスする方法を確認してください。うまくいけば、あなたは以前にX-Codeを使用したことがあります。そうでない場合は、チュートリアルで十分な情報が提供されているはずです。これは重要です。
  26. RayWenderlichに移動します。 comとあなたができるすべてのSwiftビデオとeBooksを見てください。すべての本を見るには、そこでサインアップおよび/または資料を購入することができます。 十分に休息していることを確認し、実際に自分でチュートリアルを実行してください。これが重要です。
  27. Swiftで過去のAppleWWDCビデオをご覧ください。 AppleSwiftのマニュアルをもっと注意深く読んでください。
  28. 独自のアプリケーションを作成してみてください。これにより、確認または学習する必要のある場所がどこにあるかがわかります。
  29. SwiftでのiOS開発に関するiTunesUniversity / Stanfordコースをフォローしてみてください。あなたがついていくことができるかどうか見てください。これは、他の人があなたに言うこととは反対の初心者向けのコースではありません。
  30. Youtubeでさまざまなビデオチュートリアルを見てきました。私にとって、ほとんどの場合、それらの唯一の良い点は、それらが無料であるということです。以前にリストしたチュートリアルとそれらを比較すると、なぜそれらで時間を無駄にしていたのか不思議に思うでしょう。例外はありますが、それらを調べて無駄にすることに多くの時間を費やします。人々が自分のビデオを作りたいと思っていることを感謝します。私もこれを一度試しました。だから私は専門家が物事を明確で理解できるようにするためにどれだけのエネルギーを注いだかを知っています。
  31. 今、無料のYouTubeのものを捨てて、それらのビデオのいくつかを見て、それらがいくつかの不足している情報を埋めるのに役立つかどうかを確認してください。別の視点を持つのは良いことです。
  32. Swiftオンラインニュースレターを購読してください。 RayWenderlichには、始めるのに適したリストがあります。
  33. このテーマに関する私の投稿や他の投稿を読んでください。おそらく、質問/回答をマージする方法を理解する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です