Чи можете ви використовувати крапки з комою в Ruby?


76

Вивчаючи Рубі, я помітив, що у всіх прикладах немає крапок з комою. Я усвідомлюю, що це цілком нормально, якщо кожне твердження знаходиться у своєму рядку. Але мені цікаво, чи можете ви використовувати крапки з комою в Ruby?


А людям з Рубі: чи слід використовувати крапку з комою? Чи є користь від цього? Я знаю, що коли я пишу код Ruby, я їх рефлексивно додаю.
Andy Lester,

@Andy Не використовуйте крапку з комою, за винятком випадків, коли ви хочете розмістити декілька тверджень в одному рядку, чого все одно слід уникати .
Ясер Сулейман,

@Yaser: Мені потрібні крапки з комою. Тому що, коли на рядку є функція без крапки з комою, виконайте для мене автоматичні вставки, чого я не хочу, щоб це відбувалося.
Марк Шиманскі,

Можливо, ви захочете запитати про це, тому що є досить мало людей, які використовують vim з рубіном.
Ендрю Грімм,

Посилання в коментарі @YaserSulaiman наводить аргумент, що крапка з комою робить код менш розбірливим і некрасивим. Це справедлива думка, але це думка.
Тоні

Відповіді:


100

Так.

Ruby не вимагає від нас використання будь-якого символу для розділення команд, якщо ми не хочемо об'єднати кілька операторів у один рядок. У цьому випадку в якості роздільника використовується крапка з комою (;).

Джерело: http://articles.sitepoint.com/article/learn-ruby-on-rails/2


2
але чи слід використовувати крапку з комою?
rocketspacer

1
@rocketspacer Це зовсім інше питання
ATLief

37

Як зауваження, корисно використовувати крапки з комою у вашому сеансі (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.


6

Крапка з комою: так.

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

Так, крапки з комою можна використовувати як роздільники операторів у Ruby.

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


3

Єдина ситуація, з якою я стикався, що крапка з комою корисна, це при оголошенні методів псевдонімів для 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

Для мене це насправді не віднімає читабельності.


1

Може бути цікаво використовувати крапку з комою для збереження синтаксису блоку, як у цьому прикладі:

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

Ви підтримуєте один рядок коду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.