Обкладинка нотатки: Чи створює Ruby нову копію об’єкта при присвоєнні змінної змінній?

Чи створює Ruby нову копію об’єкта при присвоєнні змінної змінній?

Зміст дописунатисність на посилання, щоб перейти до потрібного місця
При присвоєнні змінної змінній у Ruby створюється посилання на об'єкт, а не нова копія об'єкта. Це означає, що об'єкт не копіюється, а просто створюється ще одне посилання на той самий об'єкт. Таке поведінка часто називається "передачею за посиланням" (pass by reference).
Наприклад, якщо ми маємо такий код:
a = [1, 2, 3]
b = a
Тут a і b будуть посилатися на той самий об'єкт [1, 2, 3], а не на його копію. Тому будь-які зміни, які ми робимо в a, також впливають на b, і навпаки.
Посилання на об'єкт у Ruby - це просто посилання на місце в пам'яті, де зберігається сам об'єкт. Ви не можете прямо подивитися на посилання, так як це абстракція мови програмування, але ви можете працювати з ним через змінні, які вказують на об'єкт.
Посилання на об'єкт зберігається в пам'яті, поки існує хоча б одне посилання на цей об'єкт. Якщо всі посилання на об'єкт видаляються (наприклад, змінна видаляється або змінюється на інший об'єкт), то об'єкт стає недоступним і може бути автоматично видалений системою сміття (garbage collector) для вивільнення пам'яті.
У Ruby немає явного керування пам'яттю, тому ви не повинні дбати про вивільнення пам'яті для об'єктів, які вже не використовуються. Це робить програмування більш простим і менше вразливим до помилок, пов'язаних з управлінням пам'яттю.

Використання методу object_id

У Ruby, коли ви маєте об'єкт, ви не можете просто "переглянути посилання на нього", так як у вас немає прямого доступу до адреси в пам'яті, де зберігається цей об'єкт. Ruby робить всі штуки в пам'яті за вас, тому ви не можете отримати доступ до адреси пам'яті об'єкта напряму.
Однак ви можете отримати деяку інформацію про об'єкт, використовуючи метод об'єкта object_id, який поверне унікальний ідентифікатор об'єкта у вигляді рядка.
Наприклад, якщо у вас є об'єкт a, ви можете вивести його ідентифікатор так:
a.object_id=> 7100
b.object_id=> 7100
Пам'ятаємо, що b - це не окремий об'єкт в пам'яті, а посилання на інший (ми це зробили за допомогою b = a).
Зверніть увагу, що це не те саме, що "переглянути посилання на об'єкт", а просто спосіб отримати унікальний ідентифікатор об'єкта у Ruby. Зазвичай це робиться під час роботи, щоб дебажити роботу коду.
🤖 Категорії підібрані ШІ: Програмне забезпечення

🔗 Цитувати допис: "Чи створює Ruby нову копію об’єкта при присвоєнні змінної змінній?"

Якщо ви хочете процитувати цей допис у своїй роботі, статті, блозі, використовуйте наведену нижче інформацію.

Розгорнути деталі


🙌 Підтримати блог @memecode

Ви можете поширити цей допис у соцмережах, чим допоможете платформі цейво розвиватись (* ^ ω ^)

📝 Більше публікацій:
Обкладинка нотатки: Що таке "розповзання скоупу" (Scope Creep / Скоуп кріп)?
Обкладинка нотатки: Що означає "Нативний"?
Обкладинка нотатки: Як працює 'rails console --sandbox'?
Обкладинка нотатки: Для чого потрібна база даних CVE (Common Vulnerabilities and Exposures)?
Обкладинка нотатки: В чому різниця між immediate value та reference у Ruby?
Обкладинка нотатки: Чому Ruby код повертає nil після виконання puts?
Обкладинка нотатки: Яка різниця між nil і false в Ruby?
Обкладинка нотатки: Чому порожній рядок (string) у Ruby не є false?
Обкладинка нотатки: Область видимості локальної змінної в Ruby
Обкладинка нотатки: Чим відрізняється int та bigint в Ruby? Мінімальні та максимальні значення.
Дисклеймер

Інформація на сайті tseivo.com є суб'єктивною та відображає особисті погляди та досвід авторів та авторок блогів.

Використовуйте цей ресурс як одне з декількох джерел інформації під час своїх досліджень та прийняття рішень. Завжди застосовуйте критичне мислення. Людина сама несе відповідальність за свої рішення та дії.