2012-07-07 28 views
1

我最近開始使用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' } 

當然它不會返回「測試串」,但一個空字符串。

謝謝你的幫助:)

回答

2

你能更清楚地知道什麼讓你感到困惑嗎?這段代碼對你有意義嗎?

class TestClass 
    def test_method 
    config = yield 
    p config 
    end 
end 

d.test_method { "test string" } 

yield語句調用該塊。該塊返回一個字符串,該字符串被分配給test_method中的config變量,然後被打印。這是否更清晰?

在您的代碼中,行yield config在傳入剛剛實例化的Config對象時正在調用該塊。例如:

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

foo { |x| p "In block printing " + x } 
+0

這使得它更清晰是的,謝謝拉里。不過,我仍然在爲配置方法和配置對象而努力。什麼做「屈服配置」到底如何?我該如何定義配置? – user1508394 2012-07-07 07:45:37

+0

'yield config'將剛剛創建的'Config'對象傳遞給塊。比方說,讓我們說塊是'configure {| c | c.url =「http://google.com」}'...塊中的Config將被傳遞給該塊,該塊可以分配給它的url字段,然後控制流返回到分配了它的url的'configure'方法中。 (並將它傳遞給XMLRPC客戶端等) – 2012-07-07 07:51:10

+0

謝謝拉里,這幫助了很多! – user1508394 2012-07-07 07:52:40