Ruby SyntaxError:意外的输入结束,期待keyword_end

时间:2018-01-26 09:58:34

标签: ruby

我使用的是ruby版本2.4.1,无法找到语法错​​误的原因

a = 5
while(a>0) do
  a.times do |i|
    puts i
  end
  a = a-1 
end

以下是回溯

2.4.1 :022 > a = 5
 => 5 
2.4.1 :023 > while(a>0) do 
2.4.1 :024 >     a.times do |i|
2.4.1 :025 >         puts i
2.4.1 :026?>     end
SyntaxError: (irb):26: syntax error, unexpected end-of-input, expecting keyword_end
    from /usr/share/rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
2.4.1 :027 > a = a-1
 => 4 
2.4.1 :028 > end
SyntaxError: (irb):28: syntax error, unexpected keyword_end
    from /usr/share/rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'

当我在while循环之后写一些像puts语句之类的东西然后它可以工作。为什么会出现这种语法错误?

1 个答案:

答案 0 :(得分:1)

通过在do语句

前面添加;来解决问题
while(a>0) do;

或者您可以跳过可选的do

a = 5
while(a>0)
  a.times do |i|
    puts i
  end
  a = a-1 
end