Можете ли вы использовать точки с запятой в Ruby? - PullRequest
71 голосов
/ 17 октября 2010

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

Ответы [ 6 ]

93 голосов
/ 17 октября 2010

Да.

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

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

29 голосов
/ 20 октября 2010

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

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

против

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

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

5 голосов
/ 01 августа 2015

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

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
3 голосов
/ 10 марта 2012

Единственная ситуация, с которой мне приходилось сталкиваться, это использовать точки с запятой при объявлении методов псевдонимов для 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

Для меня это на самом деле не лишает читабельности.

2 голосов
/ 17 октября 2010

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

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

0 голосов
/ 09 марта 2017

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

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

Вы поддерживаете одну строку кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...