本「スイフト。 iOSおよびmacOS用のアプリケーション開発の基本。 第4版 補足および改訂」

画像 この本には、独自のiOSアプリケーション(macOS、tvOS、watchOSを含む)またはLinuxオペレーティングシステム用のプログラムを作成するために素晴らしいSwift言語でプログラミングする方法を学びたいすべての人のための包括的な情報が含まれています。 本を読んでいる間、あなたは理論的な情報だけでなく、多くの実用的な例や課題に出くわすでしょう。それらを完了することにより、あなたは研究されている資料の知識を深めます。



多くの皆さんとの長く実りのある会話の中で、多くのアイデアが開発され、新しいエディションが本当に役立ちました。 前の版と比較して、この本には次の変更と追加が含まれています。



-すべての素材は、Swiftバージョン4.1およびXcode 9に従って更新されます。

-特にiOS用アプリケーションの実用的な開発に関連する多数の新しい教材を追加しました。

-文字列データ型の章を改善しました。

-デザインとコンテンツに関するユーザーの要望とコメントを考慮した。

-誤字が修正されました。 初心者プログラマ向けの資料は別のブロックに割り当てられ、他の言語での開発経験のある読者が必要のない資料に気を取られないようにします。



本の構造



この本は、5つの大きな部分と1つのアプリケーションで構成されています。



パートI. Swiftアプリケーションの開発の準備 。 最初の部分では、Swiftの世界への旅を開始し、独自のアプリケーションの開発を始める前の最も重要で必要な手順に従います。 独自のApple IDアカウントを作成する方法、apple-developersプログラムに接続する方法、Swiftアプリケーション開発環境を取得する場所、操作方法を学習します。



パートII Swiftの基本機能 。 プログラミング言語の学習を開始できるXcode開発環境に精通した後、Swiftの基本機能を学習します。 Swiftの構文、変数と定数、存在するデータ型、およびプログラムの開発時にこれらすべてを使用する方法がわかります。



パートIII。 固定資産Swift 。 3番目の部分は、最も単純ですが非常に興味深いSwiftツールの検討と研究に焦点を当てています。 おそらくそれらの一部(タプルなど)を聞いたことがないでしょう。おそらく他の言語で他(たとえば配列)を使用したでしょう。



パートIV Swiftの重要な機能 。 4番目の部分では、最も強力で機能的なSwiftツールを使用する方法について詳しく説明します。 将来的に独自のアプリケーションを作成する際には、この部分の素材をen望の的となる規則で使用します。 また、このパートの特徴は、最初のインタラクティブアプリケーションの作成に関する多くの実践的な作業です。



パートV.アプリケーション開発の基礎 。 Xcode Playgroundで言語を学び、いくつかの簡単なアプリケーションを作成する長くエキサイティングな方法が終わると、本格的なプログラムの開発の世界に飛び込みます。 このセクションでは、インターフェースの作成の基本と、「内部の」Xcodeでプログラムがどのように機能するかを学びます。 これにより、今後は新しい素材をマスターし、美しいプロジェクトを作成できるようになります。



アプリケーション。 Swift 4.0の変更と革新 。 Swiftの以前のバージョンのいずれかを学習した場合、このアプリケーションで提供される情報を使用すると、プログラミング言語の新しいバージョンがもたらしたすべての革新と変更にすばやく慣れることができます。



本からの抜粋。 29.3。 型の制限



ユニバーサルテンプレートのデータ型に特定の制限を指定すると便利な場合があります。 例として、キーの要件があるディクショナリデータタイプを既に検討しました。データタイプはHashableプロトコルに準拠する必要があります。



ユニバーサルテンプレートを使用すると、値のデータ型に特定の要件と制限を課すことができます。 値の型が一致する必要がある型のリストを指定できます。 このリストの要素がプロトコル(データ型でもある)である場合、値の型とこのプロトコルの対応が確認されます。 型がクラス、構造体、または列挙型の場合、値の型が指定された型と一致するかどうかがチェックされます。



制約を定義するには、型名のプレースホルダーの後にコロンを介して型名のリストを転送する必要があります。 配列内の要素を検索し、そのインデックスを返す関数を実装します(リスト29.7)。



注2つの値を比較する機能を提供するために、Swiftには特別なEquatableプロトコルがあります。 これは、サポートするデータ型に、等号(==)および不等号(!=)演算子を使用して2つの値を比較する機能を実装することを義務付けています。 つまり、データ型がこのプロトコルをサポートしている場合、その値を相互に比較できます。



リスト29.7



1  func findIndex<T: Equatable>(array: [T], valueToFind: T) -> Int? { 2      for (index, value) in array.enumerated() { 3          if value == valueToFind { 4              return index 5          } 6      } 7      return nil 8  } 9  var myArray = [3.14159, 0.1, 0.25] 10  let firstIndex = findIndex(array: myArray, valueToFind: 0.1) // 1 11  let secondIndex = findIndex(array: myArray, valueToFind: 31) // nil
      
      





typeパラメーターは、<T:Equatable>と記述されます。 これは、「Equatableプロトコルをサポートするすべてのタイプ」を意味します。 その結果、Intデータ型はEquatableプロトコルをサポートするため、転送された配列の検索はエラーなしで実行されます。したがって、この型の値は処理のために受け入れられます。



29.4。 ジェネリック型拡張



Swiftを使用すると、説明されているジェネリック型を拡張できます。 この場合、タイプの説明で使用されるプレースホルダー名も拡張機能で指定できます。

スタックの最上位要素を削除せずに返す計算済みプロパティを追加することで、前述の一般的なStackタイプを拡張します(リスト29.8)。



リスト29.8



 1  extension Stack { 2      var topItem: T? { 3          return items.isEmpty ? nil : items[items.count1] 4      } 5  }
      
      





topItemプロパティは、Tタイプ名プレースホルダーを使用してプロパティのタイプを示します。 スタック上の値が存在しない可能性があるため、このプロパティはオプションです。 この場合、nilが返されます。



29.5。 関連タイプ



プロトコルを定義する場合、まだ未知のデータ型を指す関連型を使用すると便利です。 関連付けられたタイプにより、プロトコルに入力するときに使用されるデータタイプのプレースホルダーを指定できます。 実際、プロトコルがオブジェクトタイプによって受け入れられるまで、データタイプは指定されません。 関連付けられたタイプは、関連付けられたタイプの名前が後に続くrelatedtypeキーワードを使用して指定されます。



関連するItemTypeタイプを使用してコンテナプロトコルを定義します(リスト29.9)。



リスト29.9



 1  protocol Container { 2      associatedtype  ItemType 3      mutating func append(item: ItemType) 4      var count: Int { get } 5      subscript(i: Int) -> ItemType { get } 6  }
      
      





Containerプロトコルは、たとえば前述のStackコレクションタイプなど、さまざまなコレクションで使用できます。 この場合、プロトコルのプロパティとメソッドで使用されるデータ型は事前にわかりません。



この問題を解決するために、関連付けられたItemTypeタイプが使用されます。これは、プロトコルがデータタイプによって受け入れられたときにのみ決定されます。 Stackデータ型による実行のためにプロトコルを受け入れる例をリスト29.10に示します。



リスト29.10



 1  struct Stack<T>: Container { 2      typealias ItemType = T 3      var items = [T]() 4      var count: Int { 5          return items.count 6      } 7      init(){} 8      init(_ elements: T...){ 9          self.items = elements 10      } 11      subscript(i: Int) -> T { 12          return items[i] 13      } 14      mutating func push(item: T) { 15          items.append(item) 16      } 17      mutating func pop() -> T { 18          return items.removeLast() 19      } 20      mutating func append(item: T) { 21          items.append(item) 22      } 23  }
      
      





Stackタイプがコンテナプロトコルをサポートするようになったため、3つの新しい要素が登場しました。プロパティ、メソッド、および添え字です。 typealiasキーワードは、特定のオブジェクトタイプに関連付けられているデータタイプを示します。



NOTE relatedtypeキーワードはプロトコルの説明に使用され、typealiasは構造の説明に使用されることに注意してください。



名前プレースホルダーは、appendプロパティのアイテム引数の型および添え字の戻り値として使用されるため、Swiftは、プレースホルダーTがContainerプロトコルのデータ型に対応するItemType型を指すことを個別に判断できます。 relatedtypeキーワードを指定する必要はありません。削除しても、タイプはエラーなしで機能し続けます。



»本の詳細については、出版社のウェブサイトをご覧ください

» コンテンツ

» 抜粋



スウォッチャーのクーポンが20%割引-Swift



All Articles