Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Не понимаю из-за чего синтаксическая ошибка


Автор: setq 6.7.2007, 23:39
Цитата

name_style_test.rb:21: syntax error, unexpected kNOT, expecting ')'
      assert(not name.isname?)
                ^
name_style_test.rb:21: syntax error, unexpected ')', expecting kEND


Вот такая ругань идёт в ответ на вот это:

Код

  def test_string_isname_fail
    bad_names = [
      ' a', 'a ', '**', '13', '', ' ', 'a b c', '1abc',
    ]
    for name in bad_names
      assert(not name.isname?)
    end
  end


Не понимаю что тут не так. (В Ruby новичок.)

Автор: FunnyFalcon 7.7.2007, 20:21
В руби, в отличие от питона, приоритет у операторов 'not', 'or', 'and' очень хитрый (и, видимо, синтаксические правила тоже),
 и лучше ими пользоваться только в пределах 'if', 'unless', 'while' (или вообще не пользоваться)
Используй вместо них сишные аналоги: ! || && - они работают так, как ожидается:
Код

  assert(!name.isname?)

А жаль, буквенные варианты лучше читаются, и шифт не надо жать.

Автор: JUmPER 9.7.2007, 13:35
лучше так:
Код

bad_names.each |name| do
  assert(! name.isname?)
end

всё-таки это руби-стиль =)

Автор: y0ma 11.7.2007, 20:33
лучше использовать метод include?

кроме всего этого, еще массив как-то криво задан!
последняя запятая лишняя

Автор: setq 11.7.2007, 23:40
Цитата(y0ma @  11.7.2007,  20:33 Найти цитируемый пост)
лучше использовать метод include?


Где?

Автор: y0ma 12.7.2007, 17:19
setq, не обращай внимания.. это я неправильно понял.. поспешил.

Автор: setq 20.8.2007, 21:49
Да. Если кому-то интересно, то
Код

  f(not x)  #Нельзя
  f( (not x) )  #Можно


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)