2016-10-03 15 views
4

Rubyで3つの整数値を比較する方法はあまり控えめですか?PythonとRuby:yはxより大きくzより小さいか?

例えば、Pythonで真次の​​戻り:Rubyで同じ変数バインディングで

x = 2 
y = 3 
z = 4 
x < y < z 

以下は、両方のtrueを返します:

x < y && y < z 
x.send(:<, y) && y.send(:<, z) 

が、この:

x < y < z 

はNoMethodErrorを返します。

NoMethodError: undefined method `<' for true:TrueClass 

これは、x < yの最初の比較がtrueと評価され、結果としてTrueClass.instance < zからエラーが発生したためです。 Rubyで、& &を使用せずに3つの整数値を比較する方法はありますか?

ありがとうございます。 xyzが数値であるため、

+1

Rubyのコード作成の教訓の1つは、読みやすく、効率的なやり方がある場合には、表現が行き渡らないようにすることです。 Rubyは古いスタイルのCやPerlではなく、人手で作成するのが難しくなっています。 'x

答えて

2

あなたは

(x+1...z).cover? y 

か(私の好み)

(x+1..z-1).cover? y 

を書くことができ、これは

(x+1..z-1).include? y 

参照Range#cover?と同じで、 Range#include?

+2

私はおそらく '(x + 1 .. z - 1)=== y'を使うでしょうが、それは私がそれを考える方法です。 –

関連する問題