ограничение комментирования - PullRequest
6 голосов
/ 16 апреля 2011

В ruby ​​1.9 условия на конец строки были смягчены, так что теперь мы можем начать строку с периода, показывающего вызов метода. Это удобно, когда мы смешали цепочечные и нецепные методы и хотим показать, где начинается следующий нецепной. Без этой новой функции лучшее, что мы могли бы сделать, это, вероятно, использовать отступ:

method1(args1).
  method2(args2).
  method3(args3)
method4(args4).
  method5(args5).
  method6(args6)

или вставьте пустую строку. Но это было неудобно, потому что мы должны обращать внимание на отступы, и в то же время не забывать ставить точку после каждого вызова метода, кроме последнего в цепочке. Из-за этого я создал так много ошибок, имеющих дополнительный или отсутствующий период. С новой функцией мы можем сделать это намного лучше:

method1(args1)
.method2(args2)
.method3(args3)
method4(args4)
.method5(args5)
.method6(args6)

, где период визуально функционирует как отступ от маркера.

Проблема в том, что, когда вы хотите вставить комментарии перед строкой, начинающейся с точки, она возвращает ошибку.

method1(args1)
# method2 does blah blah
.method2(args2)
# method3 then does foo foo
.method3(args3)
method4(args4)
# method5 does blah blah
.method5(args5)
# method6 then does bar bar
.method6(args6)

# => error

или

method1(args1)
 # method2 does blah blah
.method2(args2)
 # method3 then does foo foo
.method3(args3)
method4(args4)
 # method5 does blah blah
.method5(args5)
 # method6 then does bar bar
.method6(args6)

# => error

Кажется, что "#...." не просто отбрасывается, а каким-то образом взаимодействует с кодом. Что происходит? Какое точное ограничение здесь? Когда периоды были в конце строки, этого не произошло.

method1(args1).
  # method2 does blah blah
  method2(args2).
  # method3 then does foo foo
  method3(args3)
method4(args4).
  # method5 does blah blah
  method5(args5).
  # method6 then does bar bar
  method6(args6)

  # => no error

1 Ответ

1 голос
/ 17 апреля 2011

Лексический синтаксический анализатор, вероятно, "более свободный" в том смысле, что он игнорирует одну новую строку и пробел, непосредственно предшествующий точке.Вероятно, это не позволяет использовать несколько новых строк.Это разбивает цепочки утверждений на несвязный беспорядок, и становится намного сложнее справляться без ложных срабатываний.Все это говорит ...

Если вам нужно добавить встроенные комментарии, это, вероятно, неуместное место для кратких, прикованных высказываний.

...