投稿

10月, 2025の投稿を表示しています

10月29日(水)3コマ目

イメージ
今日、やったこと 強制的アンラップ 暗黙的アンラップ型 [練習問題]練習問題3 今日のホワイトボード 強制的アンラップ、暗黙的アンラップ型 強制的アンラップはOptional型変数をnilチェックなしでアンラップ。 危険。使わない。 暗黙的アンラップ型変数は、明示的なアンラップなしでアンラップ。 危険。使わない。 図 強制アンラップ、暗黙的アンラップ型 !は、「nilを返すかもよ、注意して」の意味。実行時エラーの可能性大なので、使わない。 [練習問題]練習問題3 10進数 => 2進数 今更こんなことを言わなくてもだと思いますが、一応。 10進数を2進数にするには、変換後の基数2で割った余りが2真数の各ケタの数。 図 10進数->2進数 Int型配列のOptional型 Int型配列のOptional型は下図のように。 図 Int型配列のオプショナル型 次回は 練習問題の続き+解説。 

10月27日(月)2コマ目

イメージ
今日、やったこと Optional型をアンラップ オプショナルバインディング guard オプショナルチェイニング 今日のホワイトボード Optional型 前回のnilを代入できるOptional型 (C#のNull許容型)は、データを取得するには、アンラップする必要がある。 今回は、アンラップのやり方を紹介。 オプショナルバインディング nilかどうかをチェックし、非nilならアンラップ、nilならアンラップしない。 要は条件分岐。いままでのnullチェックと同じようなモノ。 図 オプショナルバインディングのイメージ ifでオプショナルバインディング 今までのifを使ったnullチェックと同じ。 図 ifでオプショナルバインディング 〇非nilのとき 図 ifでオプショナルバインディング(非nilの場合) 〇nilのとき 図 ifでオプショナルバインディング(nilの場合) 8行目のifの条件式の左辺では、変数nameと同名の定数nameを宣言している。 これは、 シャドーイング と呼ばれる仕組みで、 if letで定数を宣言すると、同名の変数をこの定数が隠してしまう 。 定数nameのスコープはifのブロック内。 guard オプショナルバインディングはifのほかに、guardでもできる。 guardはifの条件が不成立のときに実行する処理だけ を書きたいときに使う。 図 guard guardは今までの言語になかった仕組みなので、ちょっと注意!! guardでオプショナルバインディング elseのブロック では、 nilの時の処理 を書く。 また、 guard以降の処理を実行しないために、returnや例外スローで抜け出す必要あり 。 非nilの時の処理は、guardのあとに書く。 図 guardでオプショナルバインディング 関数の最初に引数チェックをする際に便利。 guardでも、guard letで変数nameを定数nameでシャドーイングをしている。 if letと異なり、定数nameはguardのあとでも使える 。便利。 〇非nilの場合 図 guard letでオプショナルバインディング(非nilの場合) 〇nilの場合 図 guardでオプショナルバインディング(nilの場合) オプショナルチェイニング チェイニング=chaining=繋げる。 ...

10月22日(水)3コマ目

イメージ
今日、やったこと [練習問題 解説]練習問題2(関数) nil optional型 今日のホワイトボード [練習問題 解説]練習問題2(関数) 正解例をあげておきます。 練習2-1 Pythonと同じように、2変数の代入値の入れ替えはタプルを使えば1行でできる。 が、Swiftの引数は定数なので、代入ができない。 練習2-2 練習2-3 練習2-4 範囲演算子では、増分は1固定。 stride()関数なら増分も指定できる。 図 stride()関数 練習2-5 練習2-6 nil JavaやC#のnullのこと。 Swiftは、 基本的に変数にnilが代入できない 。 nilを代入する必要がある場合は、Optional型にすること 。 Optional型にするには、型 ? 。 図 nilは代入できない、代入したいときはOptional型に Optional型 型指定にInt?とすると、Int型のOptional型になる。 IntとInt?は型が異なるため、別物。 図 IntとInt?は別物 型が異なるため、IntとInt?の計算はできない。 図 IntとInt?の計算はできない Optional型変数から値を取り出すには Int?は IntをOptionalでラップ したイメージ。 よって、 Optional型から代入値を取得するには、Optionalのラップを外して(アンラップ) 取り出す。 図 Optional型のイメージ 次回は Optional型変数から値を取り出す(アンラップ)する方法。  

10月20日(月)2コマ目

イメージ
今日、やったこと 関数 今日のホワイトボード 関数 今までの言語と引数が異なる。 〇基本パターン 関数定義は特に問題ないかと(Pythonに近いイメージ)。 関数呼び出しの際に、引数名を指定する 必要があるところが今までの言語と異なる。 図 関数(基本パターン) 〇外部引数名 関数内で使う引数名と、関数呼び出し側で指定する引数名を別々に指定する 。 関数内で使っている引数名を隠蔽することができる。 (単なる隠蔽以外に目的があるのかもしれん) 図 関数(外部引数名指定) 外部引数名が指定されているのに、引数名で関数を呼び出すとエラー!! 図 外部引数名ではなく、引数名で呼び出すとエラー 〇外部引数名を省略 外部引数名を _ にすると、関数呼び出し時に引数名を省略できる 。 今までの言語と同じ感覚。でも、しばらくはこれはやめましょう。 ※関数呼び出し時に引数名を指定することになれるため ※引数にデフォルト値を指定した関数を呼び出す際に、意図しないエラーを防ぐため 図 関数(外部引数名を省略) 〇引数にデフォルト値を指定 引数にデフォルト値を指定できる。 ただし、 引数を省略して関数呼び出すと、意図しないエラーが発生することがあるので、外部引数名を省略しないこと 。 練習問題2  Swiftでは、 引数は定数(イミュータブル:immutable) 。 関数内で代入不可。 図 引数は定数になる 次回は 練習問題2の続き+解説。

10月15日(水)3コマ目

イメージ
今日、やったこと 練習問題1 今日のホワイトボード Windows環境でSwiftのコードを書く 今日は、ネットワークの諸々の不具合で、Macではなく、Windowsで行いました。 Swiftは簡単なプログラムなら、Webサイトでプログラム作成、実行ができます。 サイトへのショートカットを共有フォルダに置きましたのでご利用ください。 XCodeとWebサイト上のSwift環境では、バックスラッシュの入力方法が異なるので注意してください。 図 バックスラッシュの違い 練習問題1 練習問題の正解例をあげておきます。 1_0 1_1 1_2 1_3 次回は 関数をやります。

10月7日(火)3コマ目

イメージ
今日、やったこと 条件分岐 繰り返し 今日のホワイトボード 等価演算子の==と=== ==は値が等しい。 ===は参照するインスタンスが等しい。 図 ==と=== 確認用のソースコードを以下に。 まだやっていないクラスを使っていますが、なんとなくわかると思う。 for inと辞書型 inのあとが辞書型変数だと、キーと要素のタプルを順に取り出す。 inのまえをタプルにすると、辞書型変数から取り出したタプル(キーと要素のタプル)からキーと要素を別々に取得することができる。 図 for inと辞書型変数 次回は 練習問題の続き+解説。  

10月6日(月)2コマ目

イメージ
今日、やったこと XCodeでSwiftプログラム作成、実行(Playground) 変数 文字列に変数を埋め込む 配列 範囲演算子 今日のホワイトボード 文字列に変数を埋め込む 配布したテキストには、文字列に変数を埋め込む際、  ”ぼくの名前は¥(name)" となっているが、正しくは ¥ではなく、\ 。 \はaltキー+¥キーで入力できる 。 図 文字列に変数を埋め込む 範囲演算子(p.41) ちょこちょこ使うので覚えておいてください。 次回は 基本的な文法のつづき。