有这么一段代码
def initialize(api_key, secret_key, options={})
@api_key=api_key
@secret_key=secret_key
@oauth_request_option = @@default_oauth_request_options.merge(options)
@oauth_access_option = @@default_oauth_access_options.merge(options)
yield self if block_given?
self
end
不太明白其中的
yield self if block_given?
self
是什么意思
当你需要这样调用方法的时候
def foo
end
foo { "this is block param." }
现实点的场景,比如你需要给 Views 定一个 space_less Helper 方法,清除区域内的 HTML 的空白字符,使得调用起来可以这样:
<%= spaceless do %>
<html>
<body>
<head></head>
</body>
<% end %>
这个时候,你就需要用 yield 来定义一个可以接收 block 作为参数的方法了
module ApplicationHelper
def splace_less
body = yield
body.gsub!(/\s+/,'')
body
end
end
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。