2017-02-12 8 views
0

ここでルビーを学ぶと、if/elseステートメントを制御するためにエラーが発生した場合、どうすれば使用できますか?ルビ擬似コードでは、それは何かのようになります。あなたがこれを行うべきではありませんけれどもif/elseステートメントを制御するためのエラー発生の使用

if block.call rescue false 
else 
end 

:あなたはこのようなインライン救助を使用することができ

if block.call raise? 
    #if block doesn't exist and an error is raised do this 
else 
    #if block does exist do this 
end 
+1

'begin ... rescue ... end'構文を使用しただけで同じではないでしょうか? http://rubylearning.com/satishtalim/ruby_exceptions.html – Coolness

+1

を参照してください。if/elseは、例外を発生させるコードを処理するための間違ったツールです。 'rescue'を使うべきです。 – meagar

答えて

1

。その理由は、ブロック内でのエラーを救済するためです。ブロック定義でいくつかの単語を間違えたとします。あなたのコードは意図されたように動作し、あなたはそれを追跡するのに苦労するかもしれません。

この場合、ブロックが与えられたかどうかを確認するには、単にif blockと言うことができます。 &blockパラメータの代わりにyieldを使用している場合は、特別な方法if block_given?を使用できます。

もちろん、レスキューを使って条件付きロジックを達成することはできますが、これは意図したものではなく、ほとんどの場合、はるかに単純化していません。

関連する問題