我在Ruby中创建了一个乒乓球测试。它使用新方法Fixnum
对ping_pong
类进行修补,它循环遍历范围(0..self)
,检查每个元素的某些条件,并构造结果数组。
结果数组的Ping
数字可以被3
整除,Pong
可以被5
整除,Ping-Pong
可以被elsif (num.%(3) == 0) && (num.%(5) == 0) array.push("Ping-Pong")
整除由两者组成。
我现在的问题是,为什么代码仅在部件中起作用:
elsif
领先于其他elsif
陈述?我尝试将其放在其他class Fixnum
define_method(:ping_pong) do
array = [0]
total = (0..self)
total = total.to_a
total.each() do |num|
if (num == 0)
array.push(num)
elsif (num.%(3) == 0) && (num.%(5) == 0)
array.push("Ping-Pong")
elsif (num.%(3) == 0)
array.push("Ping")
elsif (num.%(5) == 0)
array.push("Pong")
else
array.push(num)
end
end
array
end
end
之后,但它没有用。
这是我的代码:
FileReader fr = new FileReader(location.getAbsolutePath());
JSONArray iIndexes = (JSONArray) parser.parse(fr);
答案 0 :(得分:5)
当您将多个if
/ elsif
块链接在一起时,只会运行其中一个块,并且第一个具有真实条件的块将是要运行的块。所以,块的顺序很重要。例如:
if true
puts 'this code will run'
elsif true
puts 'this code will not run'
end
即使这些块的条件都为真,也只运行第一个块。如果您想同时运行,请使用两个单独的if
块,如下所示:
if true
puts 'this code will run'
end
if true
puts 'this code will also run'
end