Hoặc phương pháp này chỉ cho biết một số nguyên duy nhất mà mỗi đối tượng có?Phương pháp object_id của ruby có đề cập đến vị trí bộ nhớ không?
Trả lời
tốt, nó phụ thuộc vào ý bạn là "ruby";) Trong jruby nó chỉ là một số nguyên duy nhất theo như tôi có thể nói.
Ngoài ra, những thứ như số không phải là vị trí bộ nhớ. Tôi quên tất cả các chi tiết và chắc chắn ai đó sẽ cung cấp cho họ cho bạn.
irb(main):020:0> 1.object_id
=> 3
irb(main):021:0> (2-1).object_id
=> 3
Trong ruby "bình thường" (MRI 1.8.x và 1.9.x), nó chỉ là giá trị duy nhất.
Đây cũng là trường hợp trong IronRuby
Đó là sự kết hợp của nhiều thông số, giá trị, loại đối tượng, vị trí trong bộ nhớ.
Có thể đọc thêm here
Đây không phải là tham chiếu trực tiếp đến vị trí bộ nhớ và "mã hóa" cụ thể đối với triển khai Ruby cụ thể. Nếu bạn có thể đọc mã C, bạn có thể thấy nó có tính hướng dẫn để xem các phương thức rb_obj_id
và id2ref
trong gc.c
trong nguồn Ruby 1.8.6. Bạn cũng có thể đọc thêm về "mã hóa" trong phần "Đối tượng được nhúng trong VALUE" của bản dịch từng phần của Ruby Hacking Guide chapter 2.
[Liên kết tới nguồn MRI.] (http: // rxr. whitequark.org/mri/source/gc.c#3158) –
Nó đáng chú ý là bạn có thể thực hiện một đảo ngược tra cứu của ID đối tượng sử dụng:
ObjectSpace._id2ref(object_id)
Ví dụ:
ObjectSpace._id2ref(0) #=> false
ObjectSpace._id2ref(1) #=> 0
ObjectSpace._id2ref(2) #=> true
ObjectSpace._id2ref(3) #=> 1
ObjectSpace._id2ref(4) #=> nil
- 1. Vị trí của bộ nhớ đệm ASP.NET
- 2. Đề cập đến javascript phương pháp dụ bằng dấu/băm
- 3. Truy cập bộ nhớ không hợp lệ của vị trí trong Java
- 4. Vị trí bộ nhớ của giá trị enum trong C
- 5. vị trí bộ nhớ trong chuỗi unicode
- 6. jQuery với phương pháp vị trí
- 7. Truy cập vị trí đọc vi phạm - chuỗi không chấm dứt (bộ nhớ không đọc được)
- 8. Có đáng lưu vào bộ nhớ đệm vị trí đồng nhất của glsl trong mã không?
- 9. Trình mô phỏng Windows Azure "Truy cập không hợp lệ vào vị trí bộ nhớ".
- 10. Vị trí bộ nhớ cache của Internet Explorer
- 11. Xác định xem vị trí bộ nhớ có trong bộ nhớ cache CPU
- 12. Phương thức ArrayList.clear() có giải phóng bộ nhớ không?
- 13. Các phương thức trong các cá thể lớp có chiếm một vị trí trong bộ nhớ không?
- 14. [] phương pháp của Ruby Chuỗi
- 15. Vị trí của TextBox đến từ đâu?
- 16. Đang tải DLL từ một vị trí trong bộ nhớ
- 17. Phương pháp trích xuất vị trí từ văn bản?
- 18. Xác định vị trí của Ruby Gems
- 19. Đề cập đến Grunt mục tiêu dẫn đến Cảnh báo: Object thật không có phương pháp 'indexOf'
- 20. Cách di chuyển bộ xương kinect đến vị trí khác
- 21. mẫu vị trí bộ nhớ trên ngăn xếp và đống
- 22. rò rỉ bộ nhớ XE Delphi trong phương pháp TWSDLLookup.Destroy
- 23. của Ruby phương pháp class_eval
- 24. Chrome nhớ vị trí cuộn
- 25. Phương pháp có thể là một trang trí của một phương pháp khác của cùng một lớp không?
- 26. Dịch vụ vị trí trên iOS Phương pháp lọc ra các vị trí không hợp lệ/không chính xác
- 27. So sánh bộ nhớ (với vị trí khác biệt)
- 28. Thay đổi vị trí bộ nhớ đệm cục bộ của gradle cho tạo đám mây Jenkins
- 29. Phương pháp Java bị thiếu (ala Ruby) để trang trí?
- 30. Phương pháp tiết kiệm pin tốt nhất cho các cập nhật vị trí
Fixnum được lưu trữ trong các bit object_id chuyển sang bên trái và với bộ bit ít quan trọng nhất, hãy xem http://stackoverflow.com/questions/2402228/accessing-objects-memory-address-in-ruby/2402440#2402440 '(2-1)' của bạn không có ý nghĩa, hãy thử thay vào đó là '(4711 >> 1) .object_id' –