All original content is created in Ukrainian. Not all content has been translated yet. Some posts may only be available in Ukrainian.Learn more

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

Post cover: && vs and — різниця в Ruby, яка може зламати ваш код
This content has not been translated yet.We're showing the original Ukrainian content below.
В 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. Але краще й цього не робити. Бо трохи можна заплутатись.
Пріоритет визначає порядок обчислення, а не результат логічної операції сам по собі.

This post doesn't have any additions from the author yet.

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

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

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

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

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

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

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

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

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

Що таке memoization в Ruby?

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

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

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

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

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

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

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Middleware у Ruby on Rails і коли воно використовується
04 Nov 10:39

Що таке Middleware у Ruby on Rails і коли воно використовується

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Vanilla Rails approach?
14 Nov 16:48

Що таке Vanilla Rails approach?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Elasticsearch і як він працює?
22 Nov 12:35

Що таке Elasticsearch і як він працює?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке time-series база даних?
22 Nov 12:42

Що таке time-series база даних?

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