Skip to content

第3章 水曜日: ブロック

yowasou edited this page Aug 13, 2023 · 27 revisions

メタプログラミングruby読書会::第3章 水曜日: ブロック

構成

  • 3.1 水曜日の過ごし方
    • 3.1.1 今日の指針
    • 3.1.2 基本に立ち返る
  • 3.2 クイズ:Ruby#
    • 3.2.1 usingキーワード
    • 3.2.2 挑戦
    • 3.2.3 クイズの答え
  • 3.3 クロージャ
    • 3.3.1 スコープ
    • 3.3.2 スコープのフラット化
    • 3.3.3 スコープのまとめ
  • 3.4 instance_eval()
    • 3.4.1 カプセル化の破壊
    • 3.4.2 クリーンルーム
  • 3.5 呼び出し可能オブジェクト
    • 3.5.1 Procオブジェクト
    • 3.5.2 Proc対Lambda
    • 3.5.3 メソッド再び
    • 3.5.4 呼び出し可能オブジェクトのまとめ
  • 3.6 ドメイン特化言語を書く
    • 3.6.1 はじめてのDSL
  • 3.7 クイズ:より良いDSL
    • 3.7.1 ビルの逃亡
    • 3.7.2 クイズの答え

疑問・質問・ポイント

  • 3.1 水曜日の過ごし方

    • p107 yieldの読みは「イールド」、イにアクセントでOK? (mackato)
  • →【発音記号】ji'ːld  イにアクセントです。(tyson)
    
  • 3.2 クイズ:Ruby#

  • 3.3 クロージャ

    • P112 『ブロックの引数を〜修正されている』の意味がよく分かりません。 Ruby1.9では「x # => 1」となるようだが、yieldの引数「2」はどうなってしまうのかよく分からない。(tyson)

    • P112 同じ箇所ですが、『〜先のコードのxは1つだけとなり、』の意味がわかりませんでした。(yuto)

      • 本来ここで2つのxが存在するはずが、1つだけになってしまう、という意味かな(suchi)
    • P113 blocks/scopes.rb のコードを実行すると、my_method内でlocal_variablesが「v3」と一緒にnilを吐くのですが、私だけでしょうか?(yuto)

  • 3.4 instance_eval()

    • p.121 一番下の partial_mock_spec.rb がなにをやっているのかわかりませんでした(suchi)
    • 同上・・・「テスト対象に同様のインスタンス変数がある場合、どうすればいいだろう?」の答えがpartial_mock_spec.rbの中にあるのでしょうか?インスタンス内に同じクラスのインスタンスを保管したインスタンス変数を設定していることが何を意味するのか理解できませんです。(ywaka)
  • 3.5 呼び出し可能オブジェクト

    • p.130 UnboundMethodオブジェクト「この風変わりな機能を実際に使う理由」はどういうときなんでしょうか。難しい(suchi)(ywaka)
      • 特異メソッドを使い回すとき?と思いましたが、特異メソッドを定義したらbindできませんでした。。。 TypeError: singleton method bound for a different object (tarya)
  • 3.6 ドメイン特化言語を書く

  • 3.7 クイズ:より良いDSL

    • P135 下から三行目 プログラムは@eventsをイテレートする。の部分ですが、@eventsの中の要素をループして処理するという意味であってるでしょうか?あとイテレートという呼び方はよく使いますか?(makita)
      • 私は「の要素をループする」という言葉の方を良く使いますが、イテレートという言葉も別に違和感ありません。他のところでも聞いたことあるような。(tarya)
    • p.137 「クリーンルームのインスタンスメソッドなら、すべてのeventsとsetupsから見えるのだ。」:結構考え込んでしまったのですが、event, setupというカーネルメソッドに渡すブロックの中で使えるメソッドを専用のクリーンルームクラスで実装できる、という意味であっていますでしょうか?(tarya)

リンク

Clone this wiki locally