|
56 | 56 |
|
57 | 57 | **採用:** `when_%event_type%(%args%)` |
58 | 58 |
|
| 59 | +```ruby |
| 60 | +# フラグが押されたとき |
| 61 | +when_flag_clicked do |
| 62 | +end |
| 63 | + |
| 64 | +# [スペース▼]キーが押されたとき |
| 65 | +when_key_pressed("space") do |
| 66 | +end |
| 67 | + |
| 68 | +# [音量▼] > (10) のとき |
| 69 | +when_greater_than("loudness", 10) do # 省略形 when_gt(...) |
| 70 | +end |
| 71 | +``` |
| 72 | + |
59 | 73 | * `on(:%event_type%, %args%)` と迷った |
60 | 74 | * 決め手は「メソッド名がブロックの英語表現と類似している」こと |
61 | 75 | * スモウルビーは、先生やメンターなどの指導者がいない状況でRubyの文法を学ぶことを想定しているため、ブロックを英語(English)表記にするだけでRubyの文法をほとんど学べている、というのは魅力的 |
|
65 | 79 | ### `when_%event_type%(%args%)` |
66 | 80 |
|
67 | 81 | ```ruby |
| 82 | +# フラグが押されたとき |
68 | 83 | when_flag_clicked do |
69 | 84 | end |
70 | 85 |
|
| 86 | +# [スペース▼]キーが押されたとき |
71 | 87 | when_key_pressed("space") do |
72 | 88 | end |
73 | 89 |
|
| 90 | +# [音量▼] > (10) のとき |
74 | 91 | when_greater_than("loudness", 10) do # 省略形 when_gt(...) |
75 | 92 | end |
76 | 93 | ``` |
|
85 | 102 |
|
86 | 103 | ### `When(:%event_type%, %args%)` |
87 | 104 |
|
| 105 | +```ruby |
| 106 | +# フラグが押されたとき |
| 107 | +When(:flag_clicked) do |
| 108 | +end |
| 109 | + |
| 110 | +# [スペース▼]キーが押されたとき |
| 111 | +When(:key_pressed, "space") do |
| 112 | +end |
| 113 | + |
| 114 | +# [音量▼] > (10) のとき |
| 115 | +When(:greater_than, "loudness", 10) do |
| 116 | +end |
| 117 | +``` |
| 118 | + |
88 | 119 | * `+` `self.` を記述しなくてよい |
89 | 120 | * `+` `self.when` からの変更が少ない |
90 | 121 | * `-` Ruby にはメソッド名を大文字から始める習慣がないため、Rubyの初学者に誤った知識を与える可能性がある |
91 | 122 | * `-` Rubyの初学者がまったく動作の異なる予約語 `when` をこの When メソッドだと勘違いして覚えてしまう可能性がある |
92 | 123 |
|
93 | 124 | ### `_when(:%event_type%, %args%)` |
94 | 125 |
|
| 126 | +```ruby |
| 127 | +# フラグが押されたとき |
| 128 | +_when(:flag_clicked) do |
| 129 | +end |
| 130 | + |
| 131 | +# [スペース▼]キーが押されたとき |
| 132 | +_when(:key_pressed, "space") do |
| 133 | +end |
| 134 | + |
| 135 | +# [音量▼] > (10) のとき |
| 136 | +_when(:greater_than, "loudness", 10) do |
| 137 | +end |
| 138 | +``` |
| 139 | + |
95 | 140 | * `+` `self.` を記述しなくてよい |
96 | 141 | * `+` `self.when` からの変更が少ない |
97 | 142 | * `-` ( `When` と同様に ) Ruby にはメソッド名を `_` から始める習慣がないため、Rubyの初学者に誤った知識を与える可能性がある |
98 | 143 | * `-` ( `When` と同様に ) Rubyの初学者がまったく動作の異なる予約語 `when` をこの When メソッドだと勘違いして覚えてしまう可能性がある |
99 | 144 |
|
100 | 145 | ### `on(:%event_type%, %args%)` |
101 | 146 |
|
| 147 | +```ruby |
| 148 | +# フラグが押されたとき |
| 149 | +on(:flag_clicked) do |
| 150 | +end |
| 151 | + |
| 152 | +# [スペース▼]キーが押されたとき |
| 153 | +on(:key_pressed, "space") do |
| 154 | +end |
| 155 | + |
| 156 | +# [音量▼] > (10) のとき |
| 157 | +on(:greater_than, "loudness", 10) do |
| 158 | +end |
| 159 | +``` |
| 160 | + |
102 | 161 | * `+` `self.` を記述しなくてよい |
103 | 162 | * `+` `self.when` からの変更が少ない |
104 | 163 | * `+` `on` はイベントハンドラとして違和感がないメソッド名である |
|
0 commit comments