3

これらの構文の違いは何ですか? 2 番目よりも 1 番目の利点はありますか?

agent = Mechanize.new

# first
agent.get(url) do |page|
work
end

#second
page = agent.get(url)

いつ、どのような理由で使用する必要がありますか?

4

2 に答える 2

2

get メソッドを呼び出す 2 つの方法は、最終的に同じことを行います。どちらでもお好きな使い方ができます。ブロックを渡すことができる最初の方法は、より簡潔で読みやすいコードを記述するのに役立つ場合があります。ニーズに合ったものを選択するのはあなた次第です。たとえば、

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

Mechanize の初期化を行う場合も同じケースが適用されます。私は好む

@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

}

于 2012-07-26T21:50:21.733 に答える
2

それは好みの問題です。使用して読むのに適したスタイルを選択してください。最初の利点の 1 つは、割り当てを行う必要がないことですが、それほど重要ではありません (割り当てを避ける必要があるビューにコードがある場合を除きますが、これは別のトピックです)。

于 2012-07-26T13:18:39.110 に答える