有谁知道为什么这个脚本不起作用?
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
有谁知道为什么这个脚本不起作用?
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
看起来你在那里错过了几个“结束”。
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
您缺少两个“结束”语句。
一个用于“如果”
另一个“暂时”
你错过了一个结局
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
正如其他人所说,你错过了一些结局......而且没有条件的赤裸裸的 elsif 让我烦恼;如果您实际上并没有测试某些东西,则需要一个 else。
至于样式,您应该在 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
事实上,ruby 让这一切变得如此简单,我什至不会编写那个函数。