這些語法有什麼區別? 第一個對第二個有好處嗎?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