if..else如果在Ruby中的do..end块内

时间:2011-09-01 15:43:58

标签: ruby

我在Ruby的if...else if块中编写了一个do..end的程序。像这样:

[1..100].each do |num|
    if num % 3 == 0 and num % 5 == 0 
        tf += 1
    else if num % 3 == 0 and num % 5 != 0 
        t += 1
    end
    end
end

我的问题是:为什么有必要在最后放置三个ends?根据{{​​3}}中显示的内容,if..else if只需要一个enddo..end也只需要一个end

3 个答案:

答案 0 :(得分:6)

else if打开一个新块。使用elsif链接if和else子句。

答案 1 :(得分:2)

您的代码应该是这样写的:

[1..100].each do |num|
    if num % 3 == 0 and num % 5 == 0 
        tf += 1
    elsif num % 3 == 0 and num % 5 != 0 
        t += 1
    end
end

以下是使用 elsif 编写代码的方式,而不是其他。另一端是关闭如果 ,如果

答案 2 :(得分:2)

您只需要一个end来关闭if块(即使该if块在wikibook中包含多个elsif。但是,在您的代码中,有两个if块:一个在外部,另一个在外部else块的if部分。

长话短说:如果您使用elsif而不是else if,则只需要一个end来关闭if

另请注意,[1..100].each只会产生一次,因为[1..100]是一个只包含一个元素的数组:范围对象1..100。您可能需要(1..100).each