投稿

11月15日(水)3コマ目

今日、やったこと SwiftUIプロジェクト作成 SwiftUIのプログラム解説 今日のホワイトボード 特に何も書いてません。 次回は 11月20日(月)、21日(火)の両日にiOSアプリ作成講習を行います。 講師として株式会社イオより3名が来られます。 この講習会のあと、評価用課題を作成してもらいます。

11月13日(月)3、4コマ目

イメージ
今日、やったこと クロージャー エラー処理 今日のホワイトボード クロージャー 要は無名関数。 Swiftでは関数は第1級オブジェクトなので、変数に代入可能。  図 クロージャー 引数の型と数、戻り値の型が同じなら、処理内容が異なるクロージャー式を代入可能。 練習問題8 クロージャーの練習問題をやりました。 正解例をあげておきます。 練習問題8-1 図 練習問題8-1 ヒント 練習問題8-2 図 練習問題8-2 ヒント 練習問題8-3 図 練習問題8-3 ヒント 練習問題8-4 エラー処理 JavaやC#のtry~catchと同じようなもの。 try~catchではなく、do~catch エラー(例外)をスローする関数はthrowsで例外スローを宣言(Javaと同じ、型は不要) エラー(例外)をスローする関数を呼び出す際はtryが必要 図 エラー処理 練習問題9 以前やった練習問題6を改造。正解例をあげておきます。 図 練習問題9 ヒント calcurate()関数は 引数heightが範囲外ならnilを返す=>よって、戻り値はOptional型 引数heightが範囲外でもエラーはスローしない re...

11月9日(木)1、2コマ目

イメージ
今日、やったこと プロトコル タプル型 今日のホワイトボード プロトコル Javaのインタフェースと同じようなものと思っていただければ。 Javaとは違い、プロトコルを構造体で準拠(実装)可能。 図 プロトコル エクステンションでプロトコル拡張 エクステンションを使って既存のプロトコルを拡張できる。 プロトコルに実装を追加するイメージ。 図 extensionでプロトコル拡張 ちなみに、エクステンションを使って既存のクラスや構造体にプロトコルを準拠することも可能。(ややこしい) 図 extensionで既存クラス・構造体にプロトコル準拠 練習問題6 プロトコルの練習問題。正解例をあげておきます。 練習問題6-1 プロトコルを作るだけ。 練習問題6-2 お節介とは思いますが、一応。 図 練習問題6-2 ヒント 練習問題6-3 プロトコルを作るだけ。 練習問題6-4 プロトコル拡張。エクステンションを使ってStandardWeightプロトコルに実装を追加。 練習問題6-5 各クラスはStandardWeightプロトコル準拠クラス。よって、これらのクラスのインスタンスはStandardWeightプロトコル型変数で扱うことができる。 タプル型 型が異なる複数のデータをひとまとめにする仕組み。なにげに便利。 たとえば配列中の最大値と最小値を探す関数のような、複数の値を返したい場合、戻り値をタプル型にすればいい。 ...

11月8日(水)3コマ目

イメージ
今日、やったこと エクステンション 今日のホワイトボード エクステンション エクステンションは新たにクラスを追加することなく、既存のクラスに関数やプロパティ、イニシャライザを追加するための仕組み。 同じ仕組みとして、継承があるが、継承が使えるのはクラスのみ。 エクステンションはクラスだけでなく、構造体、列挙型、プロトコルにも使える。 図 継承とエクステンションの違い 練習問題 正解例をあげておきます。 練習問題5-1 これは構造体を作るだけ。エクステンションは関係なし。 練習問題5-2 練習問題5-1で作ったVelocity構造体にエクステンションで関数を追加。 〇ヒント Velocity構造体が必要なので、コピー。 図 練習問題5-2 Velocity構造体をコピー お節介とは思いますが、一応。 図 練習問題5-2 お節介とは思いますが その1 図 練習問題5-2 お節介とは思いますが その2 練習問題5-3 練習問題5-1のVelocity構造体に練習問題5-2で関数を追加し、さらにエクステンションでプロパティを追加。 〇ヒント Velocity構造体と練習問題5-2のエクステンションをコピー。 図 Velocity構造体、meterPerMin()関数をコピー 図 コンピューテッドプロパティ 練習問題5-4 これは構造体を作るだけ。 練習問題5-5 練習問題5-4で作ったAddition構造体にイニシャライザを追加。 次回は プロトコルをやります。  

11月1日(水)3コマ目

イメージ
今日、やったこと クラスの継承 今日のホワイトボード クラスの継承 基本的にはJavaと同じように考えてもらえれば。 図 クラスの継承 練習問題 練習問題4-1 練習問題4-2 次回は エクステンションをやります。  

10月25日(水)3コマ目

イメージ
今日、やったこと 構造体の練習問題(前回のつづき) クラス(おもにプロパティ) 今日のホワイトボード 構造体の練習問題(前回のつづき) 前回出した構造体の練習問題の正解例をあげておきます。 3-1 3-2 3-3 クラス 基本的にはJavaやC#のクラスと同じと思ってもらえれば。 ただ、機能がいろいろと追加されているので注意。 イニシャライザ 要はコンストラクタ。 ただし、JavaやC#のようにオーバーロード(引数の数、型の違いで複数定義)できない。 その代わりコンビニエンスイニシャライザがある。 いずれにしてもイニシャライザでの処理は以下の順。 ①まずはプロパティの初期化  コンビニエンスイニシャライザの場合は、指定イニシャライザの呼び出し。  なお、指定イニシャライザは    self.init(引数) で呼び出す。 ②その他の処理   すべてのプロパティが初期化できれば、メソッドを呼び出すことも可。  逆に、プロパティの初期化が完了していない段階でメソッドを呼び出すとコンパイルエラー。 図 イニシャライザでの処理の順 インスタンスに紐づく、クラスに紐づく Javaのインスタンスフィールド、クラス変数で話をしました。 Swiftでも インスタンスプロパティはインスタンスに紐づく クラスプロパティ、タイププロパティはクラスに紐づく とJavaと同じ。 図 インスタンスに紐づく、クラスに紐づく(Javaの場合) クラスプロパティとタイププロパティの違い 両方ともクラスに紐づく。 タイププロパティは 変数的なストアドプロパティ setter、getterのセットのコンピューテッドプロパティ の2種類。 クラスプロパティは  setter、getterのセットのコンピューテッドプロパティ のみ。 次回は クラス...

10月23日(月)3、4コマ目

イメージ
今日、やったこと Optional型 構造体 今日のホワイトボード 練習問題2 正解例をあげておきます。 練習問題2_2 練習問題2_3 練習問題2_4 練習問題2_5 練習問題2_6 オプショナルバインディングとオプショナルチェイニング 両方ともアンラップ。 オプショナルチェイニングはアンラップしてメソッドやプロパティにアクセスしたいときに利用。ただし、プロパティやメソッドの戻り値はOptional型になるので注意(結局、またアンラップ)。 図 オプショナルバインディングとオプショナルチェイニング ?とか!とか なにといっしょかで動きが変わる。 ただ、 !はnilになる可能性があるので注意!! (注意の!) 図 ?とか!とか 構造体 クラスに似ているが、メモリの使い方が違う。 クラス型変数にはクラスのインスタンスへの参照情報が代入される。 図 クラスの場合 構造体型変数には構造体のインスタンスそのものが代入される(イメージ)。 図 構造体の場合 次回は 練習課題3のつづき。