【週刊ドットインストール】 考える力を養うための新クラス『データで学ぶアルゴリズム』を256timesでリリース!
func(this.ctx); 周辺の処理の流れについて質問します。 (他の質問も読んだのですが理解が十分に追いついていない状態です)
func(this.ctx);
自分の言葉で(自分がわかりやすいように)説明してみたのですが、 実引数、仮引数など用語の間違い、その他解釈の間違いがあったら指摘してほしいです。
33行目~ this.drawer.draw(angle, ctx => {...}); の部分で ClockDrawer クラスのインスタンスがもつ draw() メソッドを呼び出している。このとき、 ・第1実引数: angle ・第2実引数: ctx => {...}(関数の定義) を渡している。
this.drawer.draw(angle, ctx => {...});
ClockDrawer
draw()
angle
ctx => {...}
angle は 0~360 まで (増分 6) の 60 個の数値 ctx => {...} は上記に対応した 60 個の関数の定義 を順次渡していく。これにより 11 行目~ の draw(angle, func) {...} は60回実行される。
draw(angle, func) {...}
なお、ctx => {...} は関数の定義そのものなので、実引数として渡したとしても関数が呼び出されるまでは実行されない。
11行目~ draw(angle, func) {...} の部分では、先ほどの実引数(angle, ctx => {...}) を ・第1仮引数: angle ・第2仮引数: func でそれぞれ受け取り、定義内(ブロック内)の処理を実行している。
func
18行目 func(this.ctx); の部分では仮引数 func の後ろに () をつけて関数を呼び出している。 (この仮引数 func の実体は関数の定義なので末尾に () をつければその関数を呼び出すことができる?)
()
func(this.ctx); により呼び出されるのは Clock クラスの ctx => {...} の部分であり、 このとき実引数 this.ctx が渡され、それを仮引数 ctx で受け取ることになる。 受け取った this.ctx を使って、ctx => {...} のブロック内の処理が実行される。
Clock
this.ctx
ctx
という解釈で合っているでしょうか? 解釈の間違い、用語の誤使用などを指摘して頂けないでしょうか。
特に実引数、仮引数の用語の使い方に間違いがないか見てほしいです。 また func(this.ctx); の部分ですが、仮引数 func なのにその後ろに () をつければ関数を呼び出せる、という解釈で合ってるでしょうか?
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
func(this.ctx);周辺の処理の流れについて質問します。(他の質問も読んだのですが理解が十分に追いついていない状態です)
自分の言葉で(自分がわかりやすいように)説明してみたのですが、
実引数、仮引数など用語の間違い、その他解釈の間違いがあったら指摘してほしいです。
33行目~
this.drawer.draw(angle, ctx => {...});の部分で
ClockDrawerクラスのインスタンスがもつdraw()メソッドを呼び出している。このとき、・第1実引数:
angle・第2実引数:
ctx => {...}(関数の定義)を渡している。
angleは 0~360 まで (増分 6) の 60 個の数値ctx => {...}は上記に対応した 60 個の関数の定義を順次渡していく。これにより 11 行目~ の
draw(angle, func) {...}は60回実行される。なお、
ctx => {...}は関数の定義そのものなので、実引数として渡したとしても関数が呼び出されるまでは実行されない。11行目~
draw(angle, func) {...}の部分では、先ほどの実引数(
angle,ctx => {...}) を・第1仮引数:
angle・第2仮引数:
funcでそれぞれ受け取り、定義内(ブロック内)の処理を実行している。
18行目
func(this.ctx);の部分では仮引数
funcの後ろに()をつけて関数を呼び出している。(この仮引数
funcの実体は関数の定義なので末尾に()をつければその関数を呼び出すことができる?)func(this.ctx);により呼び出されるのはClockクラスのctx => {...}の部分であり、このとき実引数
this.ctxが渡され、それを仮引数ctxで受け取ることになる。受け取った
this.ctxを使って、ctx => {...}のブロック内の処理が実行される。という解釈で合っているでしょうか?
解釈の間違い、用語の誤使用などを指摘して頂けないでしょうか。
特に実引数、仮引数の用語の使い方に間違いがないか見てほしいです。
また
func(this.ctx);の部分ですが、仮引数funcなのにその後ろに()をつければ関数を呼び出せる、という解釈で合ってるでしょうか?