我正在ruby中实现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:语法错误,意外'\ n' 当1..2
ruby中是否存在类似这种语法的内容? 谢谢!
答案 0 :(得分:5)
ruby引擎不接受case语句中的返回值。我想你想返回一个数组......使用[]或许?
像这样:
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
答案 1 :(得分:0)
返回数组将起作用,它也更具可读性。