Подтвердить что ты не робот

Можете ли вы использовать точки с запятой в Ruby?

При изучении Ruby я заметил, что во всех примерах нет точек с запятой. Я знаю, что это прекрасно, если каждое утверждение находится на собственной линии. Но мне интересно, можете ли вы использовать точки с запятой в Ruby?

Спасибо заранее!

4b9b3361

Ответ 1

Да.

Ruby не требует от нас использования какого-либо символа для разделения команд, если мы не хотим объединять несколько операторов вместе в одной строке. В этом случае в качестве разделителя используется точка с запятой (;).

Источник: http://articles.sitepoint.com/article/learn-ruby-on-rails/2

Ответ 2

В качестве побочного примечания полезно использовать полуколонны в вашем (j) сеансе irb, чтобы избежать печати смехотворно длинного значения выражения, например.

irb[0]> x = (1..1000000000).to_a
[printout out the whole array]

против

irb[0]> x = (1..100000000).to_a; 1
1

Приятно, особенно для ваших вызовов MyBigORMObject.find_all.

Ответ 3

Точка с запятой: да.

irb(main):018:0> x = 1; c = 0
=> 0
irb(main):019:0> x
=> 1
irb(main):020:0> c
=> 0

Вы даже можете запускать несколько команд, разделенных точками с запятой, в однострочном цикле

irb(main):021:0> (c += x; x += 1) while x < 10
=> nil
irb(main):022:0> x
=> 10
irb(main):023:0> c
=> 45

Ответ 4

Единственная ситуация, с которой я столкнулся с этой точкой с запятой, полезен при объявлении псевдонимов для attr_reader.

Рассмотрим следующий код:

attr_reader :property1_enabled
attr_reader :property2_enabled
attr_reader :property3_enabled

alias_method :property1_enabled?, :property1_enabled
alias_method :property2_enabled?, :property2_enabled
alias_method :property3_enabled?, :property3_enabled

Используя точки с запятой, мы можем уменьшить это на 3 строки:

attr_reader :property1_enabled; alias_method :property1_enabled?, :property1_enabled
attr_reader :property2_enabled; alias_method :property2_enabled?, :property2_enabled
attr_reader :property3_enabled; alias_method :property3_enabled?, :property3_enabled

Мне это не совсем удаляет читаемость.

Ответ 5

Да, точки с запятой могут использоваться как разделители операторов в Ruby.

Хотя мой типичный стиль (и большинство кода, который я вижу) помещает строку кода в каждую строку, поэтому использование ; довольно не нужно.

Ответ 6

Может быть интересно использовать точки с запятой, чтобы сохранить синтаксис блока, как в этом примере:

a = [2, 3 , 1, 2, 3].reduce(Hash.new(0)) { |h, num| h[num] += 1; h }

Поддерживается одна строка кода.