2016-01-04 2 views
-2

Я работаю над некоторыми простыми упражнениями на Ruby и не могу понять, почему я получаю «синтаксическую ошибку, неожиданный конец ввода, ожидающий ключевое слово_енд». Я продолжаю работать над своим кодом и не вижу, что не так, хотя я новичок в рубине.Ruby: синтаксическая ошибка, неожиданный конец ввода, ожидающий keyword_end

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) 
+2

Одна из проблем заключается в том, что вы хотите использовать 'elsif', а не' else'. –

+1

У вас есть 2 заявления по строке 10 – Lachezar

ответ

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) 

Последнее, но не менее важное: Вы не используете camelCase в Ruby для имен методов, и вы не используете явные возвращения, если это необходимо.

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) 
+0

Большое вам спасибо. У меня есть чему поучиться. Переход от python имеет взлеты и падения. Еще раз спасибо. – KSouthwick

+0

... и название метода. –

+0

Это не проблема с концом верблюда. Имена методов не могут быть константами. –

Смежные вопросы