Nêu sự khác biệt về phạm vi của hai biến này: @@name và @name?
Nêu sự khác biệt về phạm vi của hai biến này: @@name và @name?
Trong Ruby, biến bắt đầu bằng @@ là biến lớp (class variable), trong khi biến bắt đầu bằng @ là biến thể hiện (instance variable).
Biến lớp (@@name) được chia sẻ giữa tất cả các thể hiện của một lớp. Điều này có nghĩa là nếu bạn thay đổi giá trị của biến lớp trong một thể hiện, giá trị đó sẽ thay đổi đối với tất cả các thể hiện khác của lớp đó. Biến lớp được sử dụng khi bạn muốn lưu trữ thông tin hoặc trạng thái chung cho tất cả các thể hiện của một lớp[1][3][9].
Biến thể hiện (@name) là biến độc lập với mỗi thể hiện của lớp. Mỗi thể hiện của lớp có thể có giá trị riêng cho biến thể hiện của nó. Biến thể hiện được sử dụng để lưu trữ thông tin hoặc trạng thái cụ thể cho mỗi thể hiện, và không được chia sẻ giữa các thể hiện khác của lớp[1][3][9].
Citations:
[1] https://stackoverflow.com/questions/5890118/what-does-variable-mean-in-ruby
[2] https://stackoverflow.com/questions/34215746/what-is-the-difference-between-variable-scope-and-name-scope
[3] https://launchschool.com/books/ruby/read/variables
[4] https://en.wikipedia.org/wiki/Sigil_%28computer_programming%29
[5] https://softwareengineering.stackexchange.com/que...
junior
Chưa có bình luận nào