我發現令人驚訝的是Ruby符號可以被無損地整型爲整數。 因此:a.to_i
是合法的。我想知道這個整數的意義是什麼,它是該符號特有的唯一值嗎?將Ruby符號轉換爲整數
回答
您不應該這樣做,因爲Symbol#to_i
在Ruby 1.9中被刪除,因此不會向前兼容。無論如何,docs say this about it:
返回一個整數,該整數對於程序的特定執行中的每個符號是唯一的。
它大致相當於在符號上調用object_id
,因爲它們最終都調用C函數SYM2ID()
。
謝謝,安德魯。對我來說,這是繼谷歌深層鏈接:-)我要發佈一個鏈接到http://corelib.rubyonrails.org/classes/Symbol.html,這表明to_i作爲活蹦亂跳的危險的教訓。該頁面(甚至是URL)沒有提到它是Ruby 1.8.4(!)doc。更少的是* Ruby * doc,而不是ROR(如URL所示)。你必須去根目錄並看看標題才能看到該網站適用於Ruby 1.8.4!所以,吸取教訓;當在Google中遵循深層文檔鏈接時,請確保您知道您正在查看的文檔的版本。 – 2012-03-23 05:33:52
在1.8.x符號是直接的對象。他們的實施很快,而且大部分時間都很短。但是由於缺乏垃圾回收,出現了一個安全問題。
的#to_i
和#to_int
方法返回一個唯一的整數且均與內部實現。
1.9.x中的符號即時語言和隱式和顯式整數轉換都已被刪除。你當然可以得到object_id
。有趣的是,在1.8.x中,to_i
和object_id
沒有返回相同的數字。
- 1. 將字符串轉換爲Ruby中的符號和整數
- 2. ruby/rails:TypeError:不能將符號轉換爲整數
- 3. Ruby - 將符號轉換爲變量
- 4. 將n位整數從無符號轉換爲有符號
- 5. 將無符號整數變量轉換爲帶符號變量
- 6. Ruby:將一個bitarray轉換爲整數
- 7. AWK將大無符號整數轉換爲有符號整數(二進制)
- 8. 將無符號整數轉換回char *?
- 9. 排序Ruby數組 - 失敗TypeError:無法將符號轉換爲整數
- 10. 將無符號字符數組轉換爲整數
- 11. 轉換爲unsigned char無符號整數*
- 12. 將無符號字符(數組)轉換爲無符號整數(數組)
- 13. 將字符串數字(字格式)轉換爲整數ruby
- 14. 將Ruby字符串轉換爲整數數組的字節?
- 15. 將有符號整數轉換爲無符號長整型的最佳方法?
- 16. 將二進制字符串轉換爲有符號整數 - Python
- 17. 將負數浮點數轉換爲無符號整數
- 18. 轉換串號爲整數
- 19. Ruby將美元整數轉換爲字符串
- 20. ruby/mysql mysql_adapter.rb:505:in'real_connect':無法將字符串轉換爲整數
- 21. 將Base64字符串轉換爲Ruby中的整數
- 22. 在Ruby中將整數轉換爲簽名字符串
- 23. Ruby - '讀取':無法將字符串轉換爲整數
- 24. 在Ruby中將整數轉換爲十六進制字符串
- 25. 在ruby中將整數轉換爲字符串
- 26. Ruby解析XML:不將字符串隱式轉換爲整數
- 27. 將Ruby字符串轉換爲具有默認值的整數
- 28. 將字符數組轉換爲整數
- 29. 將字符數組轉換爲整數
- 30. 將字符數組轉換爲整數
':a.to_i'在'irb'和Rails控制檯中爲我引發錯誤;不知道你是如何獲得成功的。 – 2012-03-23 05:15:11