Ruby:语法错误,意外的输入结束,期待keyword_end

时间:2016-01-04 23:07:53

标签: ruby syntax-error

我正在研究一些简单的ruby练习,无法弄清楚为什么我会收到“语法错误,意外的输入结束,期待keyword_end”。我一直在运行我的代码并且看不出有什么问题,尽管我是ruby的新手。

def SimpleSymbols(str)

    spec_char = "+="
    alpha = "abcdefghijklmnopqrstuvwxyz"

    str.each_char do |i|
        if spec_char.include? i
            next
        else alpha.include? i 
            if spec_char.include? str[str.index(i) + 1] && if spec_char.include? str[str.index(i) - 1]
                next
            else
                return false
            end
        end
    end

    return true
end

SimpleSymbols(STDIN.gets.chomp)

1 个答案:

答案 0 :(得分:1)

您的代码中至少有两个语法错误。

if spec_char.include? str[str.index(i) + 1] && if spec_char.include? str[str.index(i) - 1]

上面的行包含两个if语句。它应该是:

if spec_char.include?(str[str.index(i) + 1]) && spec_char.include?( str[str.index(i) - 1])

此外还有以下一行

else alpha.include? i 

不正确,因为条件没有else子句。它应该是

elsif alpha.include?(i)

最后但并非最不重要的是,有一些代码约定错误。您不会在Ruby中使用camelCase作为方法名称,除非必要,否则不要使用显式返回。

def simple_symbols(str)
  spec_char = "+="
  alpha = "abcdefghijklmnopqrstuvwxyz"

  str.each_char do |i|
    if spec_char.include?(i)
      next
    elsif alpha.include?(i)
      if spec_char.include?(str[str.index(i) + 1]) && spec_char.include?(str[str.index(i) - 1])
        next
      else
        return false
      end
    end
  end

  true
end

simple_symbols(STDIN.gets.chomp)