有人知道为什么这个脚本无效吗?
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end
它返回:
syntax error, unexpected $end, expecting keyword_end
答案 0 :(得分:3)
看起来你错过了几个“结束”。
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end
end
end
答案 1 :(得分:2)
您缺少两个“结束”声明。
一个用于“if”
“while”的另一个
答案 2 :(得分:2)
你错过了结束
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end #<--- needed
end #<--- also needed
end
答案 3 :(得分:1)
正如其他人所说的那样,你错过了一些结局......而那些没有条件的裸露的elsif会让我感到烦恼;如果你实际上没有测试某些东西,你需要一个别的。
至于样式,你应该在ruby中使用两个空格:
def multiples_three(n)
i=1
while i<n
if i % 3 == 0
print i # no need to put in string and interpolate if it is by itself
i=i+1
else
i=i+1
end
end
end
但是执行它的方式越多,就可以使用迭代器,范围和返回数组值,而不是直接从函数中打印:
def multiples_three(n)
(1..n).select{|i| i % 3==0 }
end
puts multiples_three(12).join("\n")
3
6
9
12
=> nil
事实上,红宝石这么简单,我甚至都不会写这个功能。