我對Ruby很新,但是當我搜索Ruby的文檔時,我發現一些C源代碼也包含在文檔中。在幾乎所有這些參考文獻中,我找到了VALUE
,我很確定它的一個struct
。但是這個VALUE struct
的屬性是什麼,這實際上在做什麼?Ruby源文件中的「VALUE」類型是什麼?
回答
在C中,變量有類型,數據沒有類型。相比之下,Ruby變量沒有靜態類型,數據本身也有類型,所以數據需要在各種語言之間進行轉換。
Ruby中的數據由C型「VALUE」表示。每個VALUE數據都有其數據類型。
從某個值進行檢索C數據,您需要:
1.確定值的數據類型
2.轉換價值爲C數據
對於更多信息請看這裏:Basic Knowledge
好吧,現在我明白了。 Ruby中的每個數據類型在C中都有相應的數據類型(或者它們被轉換成這種類型),不是嗎? – Sazid 2013-05-07 14:12:09
@Sazid如果你閱讀我鏈接的文檔,事情將被清除。我相信。 – 2013-05-07 14:27:52
你可以看到的定義在頭文件:
#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
...
#elif SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long VALUE;
...
#else
# error
#endif
所以值只是一個指向的對象。正如Priti的鏈接所述,在同一文件中有一個TYPE()
宏,可用於識別VALUE
指向的數據類型。
感謝您指出頭文件:) – Sazid 2013-05-07 14:08:46
- 1. 什麼是SSIS中的.CSV文件的源類型
- 2. 什麼是[MyAttribute(Name = value)]中的「Name = value」
- 3. C# - 「set」訪問器中「value」的數據類型是什麼?
- 4. 什麼是.NET項目源代碼文件的MIME類型?
- 5. ruby中類的類型和超類的區別是什麼?
- 6. 這是什麼類型的XML文件?
- 7. 這是什麼類型的文件?
- 8. 什麼是.py文件的MIME類型?
- 9. 什麼是wsdl文件的mime類型?
- 10. 這是什麼Ruby數據類型?
- 11. 什麼是.do文件?它的MIME類型是什麼?
- 12. PHP文件上傳中支持的文件類型是什麼?
- 13. 什麼是JavaMail文件夾類型3?
- 14. 什麼是文件類型.COMPILED
- 15. ruby中的類變量是什麼
- 16. 在ruby中這是什麼類型的定義:self.class.method
- 17. Ruby中動態類型的優缺點是什麼?
- 18. Value對象與AS3中的泛型類有什麼不同?
- 19. Perl中的{$ histogram {$ value} ++}是什麼意思?
- 20. 什麼是類文件名中的$ 1?
- 21. 這個文件的來源是什麼?
- 22. 什麼是空文字的類型?
- 23. 這是什麼類型的小部件?
- 24. Ruby的對象模型是什麼?
- 25. MediaStore.ACTION_VIDEO_CAPTURE回饋什麼類型的文件?
- 26. 什麼是類型和什麼是類型構造函數scala
- 27. LetterP的類型是什麼?
- 28. 什麼是MouseEventArgs.X的類型?
- 29. T的類型是什麼?
- 30. 什麼是setContentView()的類型
任何Ruby對象在C中內部表示爲「VALUE」類型。 – sawa 2013-05-07 13:14:13
這是Ruby實現的細節。作爲* Ruby *開發人員,您無需擔心;底層的C實現與Ruby編程幾乎沒有關係。 – meagar 2013-05-07 13:43:42
然而,如果你想要利用這些知識,並且擁有一些基本的C,那麼它們都非常容易訪問。這就是大多數本地擴展實際上是如何工作的。請參閱http://media.pragprog.com/titles/ruby3/ext_ruby.pdf和/或http://guides.rubygems.org/c-extensions/ – 2013-05-07 13:45:01