Tôi hoàn toàn mới với thế giới Ruby và tôi hơi bối rối với khái niệm Biểu tượng. Sự khác biệt giữa Biểu tượng và Biến là gì? Tại sao không chỉ sử dụng các biến?
Cảm ơn.
Tôi hoàn toàn mới với thế giới Ruby và tôi hơi bối rối với khái niệm Biểu tượng. Sự khác biệt giữa Biểu tượng và Biến là gì? Tại sao không chỉ sử dụng các biến?
Cảm ơn.
Câu trả lời:
Biến và biểu tượng là những thứ khác nhau. Một biến chỉ đến các loại dữ liệu khác nhau. Trong Ruby, một biểu tượng giống như một chuỗi hơn là một biến.
Trong Ruby, một chuỗi là có thể thay đổi, trong khi một biểu tượng là bất biến. Điều đó có nghĩa là chỉ cần tạo một bản sao của một biểu tượng. Vì vậy, nếu bạn có
x = :my_str
y = :my_str
:my_str
sẽ chỉ được tạo một lần x
và y
trỏ đến cùng một vùng bộ nhớ. Mặt khác, nếu bạn có
x = "my_str"
y = "my_str"
một chuỗi chứa my_str
sẽ được tạo ra hai lần , và x
và y
sẽ trỏ đến các trường hợp khác nhau.
Do đó, các biểu tượng thường được sử dụng tương đương với enum trong Ruby, cũng như các khóa cho từ điển (hàm băm).
#mySymbol
.
Biểu tượng trong Ruby về cơ bản giống như biểu tượng trong thế giới thực. Nó được sử dụng để đại diện hoặc đặt tên một cái gì đó.
Các biểu tượng thường được sử dụng để đại diện cho một số loại trạng thái, ví dụ
order.status = :canceled
order.status = :confirmed
Bạn cũng có thể xem biểu tượng như enum ngay lập tức. Bạn không cần xác định một biểu tượng, bạn chỉ cần sử dụng nó. Bài viết này giải thích nó rất chi tiết.
Thông thường, các biến có xu hướng bị nhầm lẫn với các chuỗi, nhưng tôi có thể hiểu bạn nghĩ nó giống như một biến. Việc nay co thể hiểu được. Nghĩ theo cách này:
Trạng thái của một người chơi trong trò chơi được thể hiện bằng một con số. 1 có nghĩa là còn sống, 2 có nghĩa là không chắc chắn, 3 có nghĩa là chết. Điều này có thể dễ dàng được thay thế bằng các biểu tượng. Các biểu tượng có thể :alive
:unsure
và :dead
. Để kiểm tra xem người chơi còn sống hay không, thay vì làm điều này:
if player_status == 1
Bạn có thể làm điều này:
if player_status == :alive