で複数の変数を割り当てるためにcase文を使用して:私はルビーでHSV RGBの機能を実現しています、と私は、このような構文を期待していたルビー
def hsv_to_rgb(h, s, v)
if (h == 0) then return 0, 0, 0 end
c = v * s
hp = h/60.0
x = c * (1 - (hp % 2 - 1).abs)
r, g, b = case hp
when 0..1
c, x, 0
when 1..2
x, c, 0
when 2..3
0, c, x
when 3..4
0, x, c
when 4..5
x, 0, c
else
c, 0, x
end
m = v - c
return r + m, g + m, b + m
end
しかし、私はこの中を実行しようとすると、 Jruby次のエラーメッセージが表示されます。
SyntaxError: julia2.rb:60: syntax error, unexpected '\n' when 1..2
rubyには次の構文がありますか? ありがとう!
いくつかの点があります:1) 'h == 0なら返り値0、0、0、' h.zeroなら '[0,0,0]を返します。 2) '(1 - (hp%2 - 1).abs)'は 'hp.even? ? 0:1 '; 3)「hp」が「0」または「1」である場合、「0..1」が「真」であるが、「when.1.2」は、「when 0..1」が'hp'が' 1'と同じときに実行されます(残りの 'when'と同じです)。 4)キーワード 'return'は、メソッドの最後の行にあるときは、通常は省略されます。 –