2
我具有限定的方法,logged
,這將前綴添加到不同的方法的結果,say
一個模塊:如何在塊中調用一個方法來查看調用函數上下文中設置的變量?
module M
def logged(&block)
str = "logged: "
block.call
end
def say(value)
puts str + value
end
end
我想能夠使用M
的體內class
塊,像這樣:
class C
extend M
logged {
say "one"
say "two"
}
end
,並得到:
# => "logged: one"
# => "logged: two"
居本質上,我想要say
能夠訪問僅在logged
的調用上下文中的logged
中的值。所以,我寧願避免實例變量,全局變量等等。
什麼是正確的方法來解決這個問題?
尼斯之一,奧雅納。可能值得一提的是,由於'logged'是在類上調用的,它和'say'必須是類方法,這就是爲什麼你使用'extend'的原因。 –
@CarySwoveland +1 ..謝謝指出。 –
這並不是我所追求的,因爲我希望能夠通過它在呼叫站點獲得'str' - 這樣做並不是很乾燥,如果你有很多'說'方法。但我想這是行不通的。謝謝! –