2011-09-16 21 views
15

どのように私はRubyでこれを簡素化することができます:Ruby:番号を増やすにはどうすればいいですか?

x = (x || 0) + 1 

+4

私は(ええと、x2 =(x || 0)+ 1が良いでしょう)、 "魔法の" to_i変換をより明示的に見せてくれます。 – tokland

+0

どれくらい簡単に入手できますか?既存のソリューションを改善する余地があると思われるのはなぜですか? – meagar

答えて

23

あなたは0

x = x.to_i + 1

それとも、あなたのコードがエラーで終了してsucc

x = x.to_i.succ

3

を使用することができますにnilを変換するto_iを使用することができます。

x = 'a' 
x = (x || 0) + 1 #can't convert Fixnum into String (TypeError) 

あり+1またはsuccto_iを使用する可能性が

Chandras answerを参照)である。しかし、おそらく唯一のsuccもお手伝いを致します。

x = x.succ if x.respond_to?(:succ) 

正しい答えは、あなたの入力データに依存し、何が必要。

7

これはあなたが単純に考えるものによって異なります。あなたは使用することができます

(x ||= 0) += 1 

しかし、私はあなたのバージョンを解決すると思います。

xがハッシュ値の場合は、ハッシュでデフォルト値を使用する場合はthis answerを参照してください。

+2

これはRuby 2.0では動作しません –

関連する問題