私は同じ結果をもたらす2つの例があります。ブロックでブロックが関数(ルビー)よりも便利なときは?
:
def self.do_something(object_id)
self.with_params(object_id) do |params|
some_stuff(params)
end
end
def self.with_params(object_id, &block)
find_object_by_id
calculate_params_hash
block.call(params_hash)
end
と方法:
def self.do_something(object_id)
some_stuff(self.get_params(object_id))
end
def self.get_params(object_id)
find_object_by_id
calculate_params_hash
params_hash
end
第2の解決策は、より簡単なようだが、私は、私たちのアプリケーションコードの最初の1のいくつかの使用法を発見しました。私の質問は、どのような状況で最初のものがお勧めですか?それぞれの賛否両論は何ですか?
私の例では、Procオブジェクトを使用する理由がないと思います。 Procオブジェクトの全体のポイントは、それらをレキシカル環境で永続化し、引数として他の関数に渡すことです。 –
はタグとして "proc"を追加しました。 –
'some_stuff(params)'は何を返しますか?何も返されますか? – nkm