concurrency-in-go-support
concurrency-in-go-support copied to clipboard
3.2.3 Button型サンプルコードとその説明
ページ番号:56-57 セクション番号:3.2.3 内容タイトル:3.2.3 Button型サンプルコードとその説明 誤っている内容: 正しい内容: その他コメント:サンプルコードと黒丸3-6の説明が一致していないように読み取れます
@michilu 報告ありがとうございます。原著のままではあるのですが、次のコードでは「マウスがクリックされた」ではなく「ボタンがクリックされた」ではないか、という疑問は確かに納得が出来ます。
subsciribe(button.Clicked, func() {
fmt.Println("Mouse clicked.")
clickRegistered.Done()
})
原文は次のようになっています。
Here we register a handler that simulates displaying a dialog box when the mouse is clicked.
単純にシミュレーションをしているだけなので、善意を持って解釈して「ボタンが押されたあとにマウスのクリックのハンドラーが呼ばれる実装をシミュレートした」とも取れなくはないですが、日本語訳では素直に注釈として「ボタンが押された場合だと思われる」旨は記載しようと思います。
@ymotongpoo 説明不足でした。 具体的には、黒丸3-6の説明文の順が入れ替わっているのでは無いか、という印象を受けました。
var clickRegistered sync.WaitGroup // ❸ ⬇︎ ❹ WaitGroupを作ります。これはプログラムが stdoutへの書き込む前に終了してしまわないように するためだけのものです。
subscribe(button.Clicked, func() { // ❹ fmt.Println("Maximizing window.") ⬇︎ ❺ ボタンがクリックされたときに、ボタンがあるウィンドウを最大化するのをシミュレートしたハン ドラーを登録します。
subscribe(button.Clicked, func() { // ❺ fmt.Println("Displaying annoying dialog box!") ⬇︎ ❻ マウスがクリックされたときにダイアログボックスを表示するのをシミュレートしたハンドラーを 登録します。
subscribe(button.Clicked, func() { // ❻ fmt.Println("Mouse clicked.") ⬇︎ ?
button.Clicked.Broadcast() // ❼ ⬇︎ ❸ マウスのボタンが離されたときのハンドラーを設定します。こちらはClickedという状態(Cond) に対応する Broadcastを呼び出して、
ありがとうございます。確かにずれていますね。原著のerrataにも登録されていなかったので、後ほど登録します。