Tôi khá mới đối với Ruby, nhưng khi tôi đang tìm tài liệu về Ruby, tôi cũng tìm thấy một số mã nguồn C đã được đưa vào tài liệu. Trong hầu như tất cả các tài liệu tham khảo, tôi tìm thấy các VALUE
và tôi khá chắc chắn của nó một struct
. Nhưng các thuộc tính của VALUE struct
này là gì và điều này thực sự đang làm gì?Loại "VALUE" trong các tệp nguồn Ruby là gì?
Trả lời
Trong C, các biến có loại và dữ liệu không có loại. Ngược lại, các biến của Ruby không có kiểu tĩnh và dữ liệu tự có các loại, vì vậy dữ liệu sẽ cần được chuyển đổi giữa các ngôn ngữ.
Dữ liệu trong Ruby được thể hiện bằng loại C `VALUE '. Mỗi dữ liệu VALUE có loại dữ liệu của nó.
Để lấy dữ liệu C từ một giá trị, bạn cần phải:
1. Xác định kiểu dữ liệu của giá trị
2. Chuyển đổi các giá trị vào dữ liệu C
Đối xem thêm thông tin tại đây: Basic Knowledge
Ok, vì vậy bây giờ tôi nhận được nó. Mỗi kiểu dữ liệu trong Ruby có kiểu dữ liệu tương ứng trong C (hoặc, chúng được chuyển thành dạng như vậy), phải không? – Sazid
@Sazid Nếu bạn đọc tài liệu tôi liên kết, mọi thứ sẽ bị xóa. Tôi tin. –
Bạn có thể xem định nghĩa cho VALUE
trong file header ruby/ruby.h
:
#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
...
#elif SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long VALUE;
...
#else
# error
#endif
Vì vậy, giá trị chỉ là một con trỏ đến một đối tượng. Như được mô tả trong liên kết của Priti, có một macro TYPE()
trong cùng một tệp có thể được sử dụng để xác định loại dữ liệu được trỏ đến bởi một VALUE
.
Cảm ơn bạn đã chỉ ra tệp tiêu đề :) – Sazid
- 1. Các loại MIME cho các tệp mã nguồn dự án .NET là gì?
- 2. "$:" trong ruby là gì?
- 3. Ý nghĩa của "callback.call (value, i, value)" trong mỗi phương thức của jQuery là gì?
- 4. [....] trong Ruby là gì?
- 5. {$ histogram {$ value} ++} có nghĩa là gì trong Perl?
- 6. EOFError trong tệp I/O Ruby là gì?
- 7. là gì "cho" trong Ruby
- 8. @@ có nghĩa là gì trong Ruby?
- 9. "p" trong Ruby là gì?
- 10. "Chính" trong Ruby là gì?
- 11. Chuỗi * có nghĩa là gì trong Ruby?
- 12. "$" có nghĩa là gì trong ruby?
- 13. Các lệnh Ruby quan trọng là gì?
- 14. Trong C#, các `là gì? 'Trong các loại' DateTime? '
- 15. phần mở rộng tệp .kt? Loại tệp này là gì?
- 16. Chính xác là gì `&: capitalize` trong Ruby?
- 17. [....] trong các nguồn .Net có nghĩa là gì?
- 18. Các loại biến có thể chia nhỏ - thành viên .value
- 19. Các tệp ODEX trong Android là gì?
- 20. Các tệp .dex trong Android là gì?
- 21. Cách tốt nhất để chia sẻ các tệp nguồn Delphi giữa các dự án là gì?
- 22. Loại WORD điểm trong C là gì?
- 23. Các ký hiệu ống trong Ruby là gì?
- 24. Loại "khóa" trong JavaScript là gì?
- 25. Toán tử "= ~" trong Ruby là gì?
- 26. * (sao) có nghĩa là gì trong Ruby?
- 27. $ _ [0], $ _ [1] trong Ruby là gì?
- 28. Ruby: $ 1 có nghĩa là gì?
- 29. GUID loại là gì?
- 30. "điểm đến, nguồn" hoặc "nguồn, đích" tốt hơn là gì?
Bất kỳ đối tượng Ruby nào được biểu thị nội bộ trong C dưới dạng loại 'VALUE'. – sawa
Đây là chi tiết về triển khai của Ruby. Là một nhà phát triển * Ruby *, bạn không cần phải lo lắng về nó; triển khai C cơ bản có rất ít việc làm với lập trình trong Ruby. – meagar
Tuy nhiên, nếu bạn muốn sử dụng kiến thức này, và có một số C cơ bản, tất cả đều rất dễ tiếp cận. Đó là cách hầu hết các phần mở rộng Native làm việc trong thực tế. Xem http://media.pragprog.com/titles/ruby3/ext_ruby.pdf và/hoặc http://guides.rubygems.org/c-extensions/ –