Вивчаючи Рубі, я помітив, що у всіх прикладах немає крапок з комою. Я усвідомлюю, що це цілком нормально, якщо кожне твердження знаходиться у своєму рядку. Але мені цікаво, чи можете ви використовувати крапки з комою в Ruby?
Вивчаючи Рубі, я помітив, що у всіх прикладах немає крапок з комою. Я усвідомлюю, що це цілком нормально, якщо кожне твердження знаходиться у своєму рядку. Але мені цікаво, чи можете ви використовувати крапки з комою в Ruby?
Відповіді:
Так.
Ruby не вимагає від нас використання будь-якого символу для розділення команд, якщо ми не хочемо об'єднати кілька операторів у один рядок. У цьому випадку в якості роздільника використовується крапка з комою (;).
Джерело: http://articles.sitepoint.com/article/learn-ruby-on-rails/2
Як зауваження, корисно використовувати крапки з комою у вашому сеансі (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.
Крапка з комою: так.
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
Єдина ситуація, з якою я стикався, що крапка з комою корисна, це при оголошенні методів псевдонімів для 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
Для мене це насправді не віднімає читабельності.
Може бути цікаво використовувати крапку з комою для збереження синтаксису блоку, як у цьому прикладі:
a = [2, 3 , 1, 2, 3].reduce(Hash.new(0)) { |h, num| h[num] += 1; h }
Ви підтримуєте один рядок коду.