我想將常量FOO::BAR
轉換爲字符串"BAR"
。Ruby:將常量轉換爲字符串
這與constantize
所做的相反,並且與demodulize
非常相似,除了我期望使用字符串而不是實際的模塊引用。
我想我可以讓我自己的助手做到這一點,但我無法獲得FOO::BAR
的「字符串」版本。
理想情況下,我想避免任何第三方寶石。
實施例:
class FOO
BAR = {}
end
# this works
FOO #=> FOO
FOO.name #=> "FOO"
# this doesn't
FOO::BAR #=> {}
FOO::BAR.name #=> NoMethodError: undefined method `name' for {}:Hash
你想做什麼沒有意義。你爲什麼想獲得一個恆定名稱的「名字」?這是什麼用例? –
常量名稱也是我正在實施的服務的值。它使我無需做'BAR = {name:'BAR',other_field:other_value}'。如果我可以使用拐點將const名稱串起來,我會保持DRY。 – doremi
你的問題不清楚:在你的標題中,你說你想要一個模塊的名字,在第一段中,你說你想要一個模塊或類的名稱,但在你的代碼示例中,你實際上有一個散列這顯然沒有名字)。 –