我在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
只需要一个end
,do..end
也只需要一个end
。
答案 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
。