如何將字符串轉換爲User
?如何在Ruby中將字符串轉換爲常量?
回答
您可以使用Module#const_get
方法。例如:
irb(main):001:0> ARGV
=> []
irb(main):002:0> Kernel.const_get "ARGV"
=> []
如果你的ActiveSupport加載(例如,在Rails的),你可以使用
"User".constantize
推薦的方法是使用的ActiveSupport的constantize:
'User'.constantize
你也可以使用內核const_get
,但在Ruby < 2.0中,它不支持命名空間常量,所以像這樣:
Kernel.const_get('Foobar::User')
將在Ruby < 2.0中失敗。所以,如果你想有一個通用的解決方案,你是明智使用的ActiveSupport方法:
def my_constantize(class_name)
unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ class_name
raise NameError, "#{class_name.inspect} is not a valid constant name!"
end
Object.module_eval("::#{$1}", __FILE__, __LINE__)
end
從Ruby 2.0開始,const_get也可以用於命名空間常量 – untidyhair 2014-03-29 17:56:31
由於Ruby 2.0已經達到了EOL,所以不再需要將ActiveSupport作爲依賴來引用帶有字符串的常量。 :-) – Drenmi 2017-01-02 11:25:23
另請參閱''User'.safe_constantize' – 2017-03-14 18:15:24
Object.const_get("User")
無需需要的ActiveSupport。
+1積極支持污染一般紅寶石問題。 – 2013-01-18 22:27:48
使用Ruby魔術方法:eval()
:
eval("User") #=> User
這可能是一個完整的矯枉過正,因爲'eval'並不意味着要這樣使用,應該完全避免使用更具體的替代方案。 – yagooar 2015-08-20 12:45:51
- 1. Ruby:將常量轉換爲字符串
- 2. 如何在Python中將字符串轉換爲常量元組
- 3. C:將常量字符串轉換爲常規字符串
- 4. 如何在Ruby中轉換字符串
- 5. 如何將Python 3字節字符串變量轉換爲常規字符串?
- 6. 如何在Ruby 1.9中將哈希轉換爲JSON字符串?
- 7. 如何在Ruby 2.3.0中將字符串轉換爲YAML?
- 8. 如何在Ruby中將字符串的值從字符串轉換爲數組?
- 9. 如何在Ruby中將空白字符串轉換爲CSV字符串?
- 10. 如何在Ruby中將字符串列表轉換爲一個字符串?
- 11. 如何將字符串轉換爲Ruby中的字節?
- 12. Ruby將字符串轉換爲散列
- 13. 將字符串轉換爲DateTime Ruby
- 14. Ruby將字符串轉換爲文件
- 15. Ruby - 將字符串轉換爲日期
- 16. Ruby:將ARGV轉換爲字符串
- 17. Ruby - 將Integer轉換爲字符串
- 18. 如何將矢量字符串轉換爲簡單字符串
- 19. 如何將逐字字符串轉換爲常規Unicode字符
- 20. 無法將字符串轉換爲常量字符/字符串*爲int *
- 21. 如何在Makefile中將引用字符串轉換爲正常字符串?
- 22. 無法將字符串轉換爲常量字符
- 23. 將字符串宏/常量轉換爲寬字符/ Unicode
- 24. 如何將字符串轉換爲非字符串在matlab中
- 25. Ruby:將時間字符串轉換爲xsd:datetime符合字符串?
- 26. 在Ruby中將數字字符串轉換爲數字
- 27. 如何將常量字符*轉換爲常量無符號字符*
- 28. 如何將IO對象轉換爲Ruby中的字符串?
- 29. 如何將字符串轉換爲Ruby中的URL?
- 30. 如何將圖像字符串轉換爲Ruby中的流
你們是不是要調用一個變量函數? – harbichidian 2010-03-02 06:55:09
我也想回答這個問題;然而,你是否試圖創建一個基於字符串的新常量,或者找到一個已經初始化的常量?你也在尋找香草紅寶石還是Rails? – onebree 2015-08-26 20:37:20