有沒有更好的方式來獲得類/模塊的名稱即,C
從A::B::C
,B
從A::B::C
,和A
從A::B::C
。下面的代碼使用字符串和拆分從Cowsay::Character::Stegosaurus
得到"Stegosaurus"
,如何消除字符串和拆分?獲取類/模塊名
require 'cowsay'
x = Cowsay.random_character().class
x.name.split("::")[2]
require 'cowsay'
true
x = Cowsay.random_character().class
Cowsay::Character::Stegosaurus
x.name.split("::")[2]
"Stegosaurus"
感謝
我的理解是正確的,您希望提取每個元素而不將'A :: B :: C'轉換爲字符串?請注意,在這個例子中'A'是一個模塊,但'B'和'C'不是模塊,甚至沒有Ruby對象,所以你可以做的最好的是'A'或''A'',''B 「'和'」C「'。既然你總是以字符串結束,爲什麼避免將'A :: B :: C'轉換爲一個字符串,因爲你有一個非常簡單的方法來做到這一點? –
如果我在上面的評論中不清楚,'A :: B :: C'告訴我們有三個嵌套模塊,'A','A :: B'和'A :: B :: C'。 'B'和'C'不是模塊。如果你定義了模塊'A :: C'和'B :: C',那麼引用模塊'C'意味着什麼? –
IMO'split(「::」)[2]'並不是那麼糟糕。當然不像要求主動支持那麼糟糕。這很簡單,完成這項工作。 – Max