1 00:00:00,840 --> 00:00:03,400 このセッションで扱うのは 2 00:00:03,560 --> 00:00:06,320 括弧と角括弧の使い方です。 3 00:00:06,480 --> 00:00:08,520 これらを混同しないでください。 4 00:00:09,160 --> 00:00:12,480 括弧は表現式やコードの中での 5 00:00:12,640 --> 00:00:15,040 実行の優先順位を変えます。 6 00:00:15,200 --> 00:00:17,760 一方で 角括弧はブロックを定義します。 7 00:00:17,920 --> 00:00:22,840 ブロックの中に表現式が定義されている場合 それらの表現式は実行されていません。 8 00:00:23,000 --> 00:00:27,160 実行を制御することができます。 ブロックに value メッセージを送ることで 9 00:00:27,320 --> 00:00:29,960 その表現式の実行を開始します。 10 00:00:31,960 --> 00:00:36,760 角括弧を使うべき場合について もう一度説明します。 11 00:00:36,920 --> 00:00:38,960 あるいくつかの表現式について 実行するかどうかわからない時に 12 00:00:39,120 --> 00:00:44,600 それらの表現式を角括弧で囲みます。 13 00:00:45,280 --> 00:00:49,320 例えば、if 式に使いますか? 分岐になっていますか? 14 00:00:50,440 --> 00:00:53,440 表現式を何回評価するかわからない場合も 15 00:00:53,600 --> 00:00:57,040 角括弧を使って 16 00:00:58,200 --> 00:01:01,760 ブロックにします。 17 00:01:02,760 --> 00:01:07,120 例えば n timesRepeat: [self doSomething] 18 00:01:07,280 --> 00:01:11,840 self doSomething はブロックの中に隠蔽されています。 19 00:01:12,480 --> 00:01:18,080 なぜかというと その表現式を何度も実行しなければならないからです。 20 00:01:18,240 --> 00:01:22,840 ブロックの中に入れて 何回も value メッセージを送らなければなりません。 21 00:01:25,840 --> 00:01:29,680 もう1つの例では ifTrue: メッセージを送ります。 22 00:01:29,840 --> 00:01:32,000 レシーバ次第で 23 00:01:32,160 --> 00:01:36,240 つまりこの表現式が true か false かによって 24 00:01:36,920 --> 00:01:41,120 表現式 self doSomething を 実行したりしなかったりします。 25 00:01:41,280 --> 00:01:46,120 ここで括弧は使えません。 実行すべきでない場合もあるからです。 26 00:01:47,120 --> 00:01:48,840 その表現式をブロックに入れれば 27 00:01:49,000 --> 00:01:52,640 value メッセージを送るかどうかを あなたが決めることができます。 28 00:01:55,080 --> 00:01:59,240 whileTrue: でも同じことです。 29 00:01:59,400 --> 00:02:04,120 レシーバとなるブロックがあり 引数となるブロックを渡します。 30 00:02:04,280 --> 00:02:10,040 レシーバのブロックの評価が 真偽値の true と false のどちらを返すかによって 31 00:02:10,200 --> 00:02:14,280 1度だけ実行したり、複数回実行したり 全く実行しなかったりします。 32 00:02:14,440 --> 00:02:18,000 表現式 self doSomething は ブロックの中でなければならないのです。 33 00:02:19,400 --> 00:02:22,240 小問題をやってみましょう。 34 00:02:23,160 --> 00:02:26,400 問題は次の2つの表現式です。 35 00:02:26,560 --> 00:02:30,360 1 から n まで self doSomething を繰り返す。 36 00:02:30,520 --> 00:02:33,040 括弧と角括弧のどちらを使うべきでしょう? 37 00:02:33,200 --> 00:02:36,800 x が空であれば self doSomething をする。 38 00:02:36,960 --> 00:02:39,520 括弧と角括弧のどちらを使うべきでしょう? 39 00:02:41,720 --> 00:02:43,440 では正解を教えます。 40 00:02:44,360 --> 00:02:46,920 どちらの場合も角括弧を使います。 41 00:02:47,080 --> 00:02:51,600 1問目の場合 self doSomething を繰り返したいわけです。 42 00:02:51,760 --> 00:02:55,360 このブロックに value メッセージを 何回か送らなければなりません。 43 00:02:56,080 --> 00:02:59,000 2問目の場合 x ifEmpty: ですが 44 00:02:59,160 --> 00:03:04,360 もし x が空でない場合には self doSomething を実行すべきではありません。 45 00:03:04,520 --> 00:03:07,560 もし x が空の場合には self doSomething を実行しなければなりません。 46 00:03:07,720 --> 00:03:10,280 まとめると このコースでは 47 00:03:10,440 --> 00:03:13,720 括弧と角括弧を混同してはいけないことを 学びました。 48 00:03:13,880 --> 00:03:19,120 括弧は表現式を計算する順序を 変えるためのもので 49 00:03:19,280 --> 00:03:23,800 角括弧は表現式を 50 00:03:23,960 --> 00:03:27,040 凍結させて 51 00:03:27,200 --> 00:03:31,400 その実行を制御するためのものです。 複数回実行することもあります。