1

私は最近Rubyを使い始めたので、これにはかなり慣れていません。私の現在の目的は、retort と呼ばれる Ruby モジュールを使用することです。私の問題は、次のような configure メソッドを理解していないことです。

def configure
    config = Config.new
    yield config
    @@service = XMLRPC::Client.new2(config.url)
end

構成クラスは単純で、次のようになります。

class Config
    attr_accessor :url
end

それがどのように機能するのかを正確に理解するために、ちょっとした例を作成してみました。

class TestClass
  def test_method
     config = String.new
     yield config
     p config
  end
end

d = TestClass.new
d.test_method { 'test string' }

もちろん、「テスト文字列」ではなく空の文字列を返します。

助けてくれてありがとう:)

4

1 に答える 1

2

何があなたを混乱させているのか、もっと明確にできますか? このコードはあなたにとって意味がありますか?

class TestClass
  def test_method
    config = yield
    p config
  end
end

d.test_method { "test string" }

yieldステートメントはブロックを呼び出します。configブロックは文字列を返します。この文字列は変数に割り当てられてからtest_method出力されます。それはそれをより明確にしますか?

あなたのコードでは、yield configインスタンス化されたばかりのオブジェクトを渡しながら、行がブロックを呼び出していConfigます。例えば:

def foo
  s = "a string"
  yield s
  p "In foo printing " + s
end

foo { |x| p "In block printing " + x }
于 2012-07-07T07:42:10.357 に答える