这些语法有什么区别?第一个比第二个有什么好处吗?
agent = Mechanize.new
# first
agent.get(url) do |page|
work
end
#second
page = agent.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
}