it-swarm-vi.com

Biểu tượng trong Ruby là gì?

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 sử dụng biến?

Cảm ơn.

49
wassimans

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 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 và xy 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 hai lầnxy 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).

74
mipadi

Biểu tượng trong Ruby về cơ bản giống với biểu tượng trong thế giới thực. Nó được sử dụng để đại diện hoặc đặt tên cho 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 rất chi tiết.

18
Jakub Arnold

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. Cai nay la 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à 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ể là :alive:unsure: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

1
sirsnow