07/09/2018, 10:36

Phân Biệt Symbol và String Trong Ruby

Symbol trong Ruby là một khái niệm khá thú vị và được sử dụng rất nhiều trong Ruby. Nếu bạn đã từng làm việc với với Ruby on Rails bạn sẽ thấy trong framework sử dụng rất nhiều symbol. Bài viết này sẽ giúp bạn phân biệt được sự khác nhau giữa Symbol và String trong Ruby. Symbol Là Gì Symbol là ...

Symbol trong Ruby là một khái niệm khá thú vị và được sử dụng rất nhiều trong Ruby. Nếu bạn đã từng làm việc với với Ruby on Rails bạn sẽ thấy trong framework sử dụng rất nhiều symbol. Bài viết này sẽ giúp bạn phân biệt được sự khác nhau giữa Symbol và String trong Ruby.

Symbol Là Gì

Symbol là một đối tượng hay object mà giá trị của nó thường được dùng để đại diện cho tên (ví dụ như tên của khoá trong mảng, tên phương thức trong đối tượng…). Ví dụ sau sẽ tạo một biến với giá trị là một Symbol:

mySymbol = :hello

Hoặc bạn cũng có thể sử dụng cú pháp như sau:

sayHello = :"hello"

Hoặc sử dụng phương thức intern trong lớp String:

sayHello = "hello".intern

Nếu sử dụng chương trình IRB trên terminal để chạy đoạn mã trên bạn sẽ thấy kết quả như sau:

Symbol trong Ruby

Symbol và String

Với cùng một giá trị đầu vào sử dụng Symbol luôn đảm bảo giá trị object_id của nó không thay đổi trong khi String thì luôn thay đổi. Để hiểu hơn về điều này chúng ta cùng tham khảo ví dụ sau:

puts :"hello".object_id # => 129113
puts :"hello".object_id # => 129113
puts :"hello".object_id # => 129113
puts :"hello".object_id # => 129113

Với String:

puts "hello world".object_id # => 3103210
puts "hello world".object_id # => 3278410
puts "hello world".object_id # => 3093020
puts "hello world".object_id # => 3189230

Điều này cũng có nghĩa máy tính sẽ cần ít bộ nhớ hơn khi bạn sử dụng Symbol thay vì String. Vì vậy các lập trình viên thường sử dụng Symbol để đặt tên cho các khóa trong mảng thay vì string. Ví dụ:

user = [:name => 'Janes', :age => 24]
puts user.name # 'Janes'
0