这些语法有什么区别? 第一个对第二个有好处吗?Ruby的两种不同的语法Mechanize.get(url) - 有什么好处?
agent = Mechanize.new
# first
agent.get(url) do |page|
work
end
#second
page = agent.get(url)
我应该在什么时候和为什么使用哪一个?
这些语法有什么区别? 第一个对第二个有好处吗?Ruby的两种不同的语法Mechanize.get(url) - 有什么好处?
agent = Mechanize.new
# first
agent.get(url) do |page|
work
end
#second
page = agent.get(url)
我应该在什么时候和为什么使用哪一个?
的两种方式调用get方法最终做同样的事情。你可以用你喜欢的方式使用它。它允许你传递一个块的第一种方式可能对编写更简洁和/或可读的代码很有用。它取决于你选择适合你的需求。举个例子,
agent = Mechanize.new
agent.get(url) do |page|
item = page.forms.first do |form|
form.fieldname = "foo"
end.submit
# do something with item
end
其内容优于
page = agent.get(url)
form = page.forms.first
form.fieldname = "foo"
item = agent.submit(form).body
#do something with item
同一案件做机械化的初始化时适用。我喜欢
@agent = Mechanize.new { |agent|
agent.user_agent_alias = 'Mac Safari'
agent.follow_meta_refresh = true
agent.redirect_ok = true
}
到
@agent = Mechanize.new
@agent.user_agent_alias = 'Mac Safari'
@agent.follow_meta_refresh = true
@agent.redirect_ok = true
}
它喜好的问题,接你发现无论风格的使用和阅读效果更好。第一个好处是,你不必做任何任务,但它不是真正重要的(除非你的代码是在一个视图中,在这里你应该避免的任务 - 但这是另一个话题)
所以,唯一的好处就是可读性? – Aljaz 2012-07-31 14:35:18