作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个定义方法的模块,logged
,它将为不同方法的结果添加前缀,say
:
module M
def logged(&block)
str = "logged: "
block.call
end
def say(value)
puts str + value
end
end
我希望能够在 class
block 的主体内使用 M
,如下所示:
class C
extend M
logged {
say "one"
say "two"
}
end
并得到:
# => "logged: one"
# => "logged: two"
本质上,我希望 say
能够访问 logged
中的值,这些值仅在 logged
的调用上下文中。因此,我宁愿避免使用实例变量、全局变量等。
实现这一目标的正确方法是什么?
最佳答案
这是一种方法:-
module M
def logged(&block)
str = "logged: "
block.call(str)
end
def say(str, value)
puts str + value
end
end
class C
extend M
logged { |s|
say s, "one"
say s, "two"
}
end
关于ruby - 如何让在 block 中调用的一个方法能够查看在调用函数的上下文中设置的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23261621/
我是一名优秀的程序员,十分优秀!