클래스/모듈 이름 즉 얻을 수있는 더 나은 방법이 있나요, 그리고 A::B::C
에서 A
. 다음 코드는 문자열과 분할을 사용하여 "Stegosaurus"
을 Cowsay::Character::Stegosaurus
에서 가져 오는 방법입니다. 문자열 및 분할 방법을 없애는 방법은 무엇입니까?<code>C</code><code>B</code>, <code>A::B::C</code>에서 <code>A::B::C</code>에서 가져 오기 클래스/모듈 이름
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는 3 개의 중첩 모듈 인 A, A :: B 및 A :: B :: C가 있음을 나타냅니다. 'B'와'C'는 모듈이 아닙니다. 'A :: C'와'B :: C' 모듈을 정의했다면'C' 모듈을 가리키는 것이 무슨 뜻일까요? –
IMO'split ("::") [2]'나쁘지 않습니다. 확실히 activesupport를 요구하는 것처럼 나쁘지 않습니다. 그것은 간단하고 일을합니다. – Max