我正在研究一些简单的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)
答案 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)