&& vs and — різниця в Ruby, яка може зламати ваш код

Обкладинка допису: && vs and — різниця в Ruby, яка може зламати ваш код
В Ruby є два оператори логічного "і" - && і and. На перший погляд вони схожі, але мають різний пріоритет виконання.
&& має високий пріоритет, тому його зазвичай використовують для логічних виразів, умов і циклів.
and має низький пріоритет, тому його часто використовують для контрольного потоку, коли потрібно послідовно виконати кілька дій.
Приклад з &&:
result = true && false
# спочатку обчислюється true && false => false
# result => false
Приклад з and:
result = true and false
# Ruby читає як (result = true) and false
# спочатку виконується присвоєння result = true
# потім виконується логічне і з false, але це не змінює змінну result
result # => true
Коли і що використовувати?
  • Використовуй && для логіки та умов.
  • Використовуй and для послідовного виконання дій (control flow), наприклад return true and log_success. Але краще й цього не робити. Бо трохи можна заплутатись.
Пріоритет визначає порядок обчислення, а не результат логічної операції сам по собі.

Цей допис поки що не має жодних доповнень від автора/ки.

Singleton class (eigenclass) у Ruby: що це і навіщо потрібно
29 жовт., 18:29

Singleton class (eigenclass) у Ruby: що це і навіщо потрібно

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
==, equal?, eql?, === у Ruby: що перевіряють і коли використовувати
29 жовт., 20:47

==, equal?, eql?, === у Ruby: що перевіряють і коли використовувати

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Include, Extend, Prepend у Ruby: як вони працюють і в чому різниця
29 жовт., 21:20

Include, Extend, Prepend у Ruby: як вони працюють і в чому різниця

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
module_function у Ruby: коли методи модуля доступні як модульні та як функції
29 жовт., 21:53

module_function у Ruby: коли методи модуля доступні як модульні та як функції

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке memoization в Ruby?
30 жовт., 10:17

Що таке memoization в Ruby?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
is_a?, kind_of?, instance_of? — як Ruby перевіряє тип об’єкта?
30 жовт., 19:55

is_a?, kind_of?, instance_of? — як Ruby перевіряє тип об’єкта?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Змінні у Ruby: @, @@ та class instance variable
30 жовт., 20:54

Змінні у Ruby: @, @@ та class instance variable

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Різниця між blank?, present?, empty? та nil? у Ruby
30 жовт., 21:06

Різниця між blank?, present?, empty? та nil? у Ruby

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska