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 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'