it-swarm-id.com

Apa yang dimaksud dengan simbol di Ruby?

Saya benar-benar baru di dunia Ruby, dan saya agak bingung dengan konsep Simbol. Apa perbedaan antara Simbol dan Variabel? Mengapa tidak hanya menggunakan variabel?

Terima kasih.

49
wassimans

Variabel dan simbol adalah hal yang berbeda. Variabel menunjuk ke berbagai jenis data. Di Ruby, simbol lebih seperti string daripada variabel.

Di Ruby, string dapat berubah, sedangkan simbol tidak berubah. Itu berarti bahwa hanya satu salinan simbol yang perlu dibuat. Jadi, jika sudah

x = :my_str
y = :my_str

:my_str hanya akan dibuat sekali, dan x dan y menunjuk ke area memori yang sama. Di sisi lain, jika Anda punya

x = "my_str"
y = "my_str"

sebuah string yang mengandung my_str akan dibuat dua kali, dan x dan y akan menunjuk ke instance yang berbeda.

Akibatnya, simbol sering digunakan sebagai setara dengan enum di Ruby, serta kunci ke kamus (hash).

74
mipadi

Simbol dalam Ruby pada dasarnya sama dengan simbol di dunia nyata. Simbol ini digunakan untuk mewakili atau memberi nama sesuatu.

Simbol sangat umum digunakan untuk mewakili semacam keadaan, misalnya

order.status = :canceled
order.status = :confirmed

Anda juga dapat melihat simbol sebagai enum instan. Anda tidak perlu mendefinisikan simbol, cukup gunakan saja. Artikel ini menjelaskannya dengan sangat terperinci.

18
Jakub Arnold

Biasanya, variabel cenderung bingung dengan string, tapi saya bisa mengerti Anda berpikir itu seperti variabel. Itu bisa dimengerti. Pikirkan seperti ini:

Status pemain dalam permainan diwakili oleh angka. 1 berarti hidup, 2 berarti tidak yakin, 3 berarti mati. Ini dapat dengan mudah diganti dengan simbol. Simbolnya bisa :alive:unsure dan :dead. Untuk memeriksa apakah seorang pemain masih hidup, alih-alih melakukan ini:

if player_status == 1

Anda bisa melakukan ini:

if player_status == :alive

1
sirsnow