2

そこで、ブール値を1または3の場合はtrueに、0または2の場合はfalseに変更する学校向けのRubyプログラムを作成しています。私はJavaのバックグラウンドを持っているので、これはコードは機能するはずです:if n == 1 || n == 3

しかし、そうではありません。だからここでの私の質問は、RubyのIfブロックで「Or」式を使用することは可能ですか?私の現在の状況は、次のようなもので簡単に解決できることを知っています。

if n == 0
    t_o_f = false
elsif n == 1
    t_o_f = true

エセテラ。しかし、将来的にOrinIfブロックを使用できるかどうかを知りたいです。

4

3 に答える 3

3

はい、 (論理 OR) 演算子ifを使用するものを含め、任意の式を条件で使用できます。||

Java と同様に、Ruby の||演算子は短絡します。つまり、左側が true の場合、右側は評価されません。

ワンライナーの場合、慣用的なルビは接尾辞を使用します。

puts "Yes" if n == 4 || n == 5

ただし、行が長い場合は接尾辞を避け、複数の行に分割してください。

if n == 4 || n == 5
  puts "This is a big long string to be output....................."
end

これは、長い行の最後で後置 ifが視覚的に失われる可能性があるためです。

接頭辞 ifを持つワンライナーを使用できますが、一般的には見られません:

if n == 4 || n == 5 then puts "foo" end

多分:

if n == 4 || n == 5 ; puts "foo" ; end

これを 1 行にまとめると、実際には複数行になります。セミコロンは改行として機能します。

複数の条件をテストする場合、以下を使用すると役立つ場合がありますArray#include?

puts "foo" if [4, 5].include?(n)

たった 2 つの条件の場合、これの値はそれほど大きくありません。3 つ以上の場合、よく読みます。

于 2012-10-18T15:48:04.033 に答える
1

or 演算子が機能し、キーワードも記述できます。

if n==1 or n==2
end

http://www.tutorialspoint.com/ruby/ruby_operators.htm

そして、あなたが望むものをこのように書くこともできます:

x = (n%2) ? true : false
于 2012-10-18T15:49:24.703 に答える
0

@Wayne Conrad に加えて: n が true か false かを決定する「ロジック」がほとんどまたはまったくない場合、これも適切なオプションです。

result = case n
  when 1, 3 then true
  when 0, 2 then false
end
于 2012-10-18T20:52:06.423 に答える