Ruby产生新手问题

时间:2012-07-07 07:32:46

标签: ruby yield

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

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

Config类很简单,看起来像:

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' }

当然它不会返回测试字符串'但是一个空字符串。

感谢您的帮助:)

1 个答案:

答案 0 :(得分: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 }