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

Обкладинка допису: is_a?, kind_of?, instance_of? — як Ruby перевіряє тип об’єкта?
ЗмістНатисність на посилання, щоб перейти до потрібного місця
is_a?, kind_of?, і instance_of? у Ruby перевіряють тип об’єкта, але з різною глибиною.

is_a? та kind_of?

Вони еквівалентні - обидва перевіряють, чи об’єкт є екземпляром певного класу або його нащадка.
class Animal; end
class Dog < Animal; end

dog = Dog.new

dog.is_a?(Dog)      # true
dog.is_a?(Animal)   # true - бо Dog < Animal
dog.kind_of?(Animal) # true - те саме

instance_of?

Перевіряє точний клас, без спадковості.
dog.instance_of?(Dog)     # true
dog.instance_of?(Animal)  # false — бо це нащадок, не сам клас
Якщо коротко:
is_a? та kind_of? - перевіряють по ланцюжку спадковості
instance_of? - перевіряє тільки конкретний клас

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

Що відбувається, якщо викликати [1, 2, 3].map(&Person)
29 жовт., 17:54

Що відбувається, якщо викликати [1, 2, 3].map(&Person)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
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
&& vs and — різниця в Ruby, яка може зламати ваш код
30 жовт., 20:23

&& vs and — різниця в 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