Trong Ruby, đối tượng String
hoặc Array
(v.v) là gì để được 'cố định'? Thuộc tính này được đặt hoặc sửa đổi như thế nào/ở đâu?Đối tượng đông lạnh trong Ruby
5
A
Trả lời
7
Điều đó có nghĩa là bạn không thể sửa đổi nó. Bạn đặt nó theo phương thức freeze
.
s = "a"
concat
sửa đổi thể hiện chuỗi.
s.concat("b")
# => "ab"
Khi bạn đóng băng các chuỗi:
s.freeze
sau đó, bạn không thể áp dụng concat
nữa.
s.concat("c")
# => RuntimeError: can't modify frozen String
Tuy nhiên, bạn có thể áp dụng phương pháp mà không sửa đổi người nhận:
s + "c"
# => "abc"
2
Ngăn chặn thay đổi hơn nữa để obj. Một RuntimeError sẽ được nâng lên nếu sửa đổi được cố gắng. Không có cách nào để giải phóng một vật thể đông lạnh. Xem thêm Object # frozen ?.
a = [ "a", "b", "c" ]
a.freeze
a << "z"
sản xuất:
prog.rb:3:in `<<': can't modify frozen array (RuntimeError)
from prog.rb:3
Các vấn đề liên quan
- 1. Ruby 1.9.1 với rspec "không thể sửa đổi đối tượng đông lạnh"
- 2. ruby - không thể sửa đổi chuỗi đông lạnh (TypeError)
- 3. Mô-đun Python đông lạnh là gì?
- 4. không thể sửa đổi Hash đông lạnh trong rails3
- 5. Việc bẻ khóa liên tục các bộ đông lạnh của Python
- 6. làm thế nào để unproxy một đối tượng ngủ đông
- 7. jqGrid thanh công cụ lọc Toggle với cột đông lạnh không hoạt động
- 8. pdb.set_trace() gây ra các kho lưu trữ đông lạnh, không rơi vào trình gỡ lỗi
- 9. Hàng cuối cùng của DataGridView được đông lạnh làm tổng của các cột?
- 10. Cách lấy Đường dẫn của tập lệnh đông lạnh thực hiện
- 11. Python: shuffling danh sách, nhưng vẫn giữ một số yếu tố đông lạnh
- 12. đối tượng So sánh trong ruby
- 13. Xóa đối tượng giống hệt trong Ruby?
- 14. DRY'er Khởi tạo đối tượng trong Ruby
- 15. Đối tượng cũ đồng bằng trong Ruby?
- 16. Ruby: "if! Object.nil?" hoặc "nếu đối tượng"
- 17. Đối tượng chuỗi Ruby rỗng hay không?
- 18. Đối tượng find_first của Ruby Array?
- 19. Thiết kế hướng đối tượng với Ruby
- 20. Vị trí đối tượng Ruby cũ đồng bằng trong Rails
- 21. có được phương pháp của một đối tượng trong ruby
- 22. So sánh đối tượng tương đương trong Ruby
- 23. Truy cập địa chỉ bộ nhớ đối tượng trong ruby ..?
- 24. Ruby: Kiểm tra chiều rộng Đông Á (Unicode)
- 25. ehcache + ngủ đông
- 26. Khám phá các thành viên đối tượng Ruby?
- 27. Đối tượng Ruby có giới hạn kích thước không?
- 28. Ruby: Tại sao Array.sort lại làm chậm đối tượng lớn?
- 29. Kiểm tra xem đối tượng Ruby có phải là Boolean
- 30. Bộ sưu tập rác đối tượng Ruby Class