1

我最近开始使用 Ruby,对此很陌生。我目前的目标是使用一个名为 retort 的 ruby​​ 模块,我的问题是我不理解如下所示的配置方法:

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 回答