문자열을 클래스 이름으로 변환하는 방법은 무엇입니까?클래스가 정의되어 있는지 어떻게 확인합니까?
Object.const_get("Amber")
또는
"Amber".constantize
(레일에서) 그러나이 중 하나가 실패합니다 : 노란색 이미 클래스 인 경우, 나는 통해 클래스에 문자열에서
얻을 수 있습니다 앰버가 이미 클래스가 아닌 경우 NameError: uninitialized constant Amber
.
내 첫번째 생각은 defined?
방법을 사용하는 것입니다,하지만 이미 존재하는 클래스와 그렇지 않은 사이에 차별하지 않습니다 : 내가 테스트 어떻게
>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
을 그래서 문자열 이름 클래스의 경우 그것을 변환하려고하기 전에? (좋아, 내가 어떻게 동의? 너무 추한 나가서 설명하자면 NameError 오류를? 잡으려고 begin
/rescue
블록 ...에 대한)
'정의'의 예에서 정확하게은 어떻게해야되는 일을한다 : String 객체에'constantize' 메소드가 정의되는 경우가 확인합니다. 문자열에 "Object"또는 "AClassNameThatCouldNotPossiblyExist"가 포함되는지는 상관하지 않습니다. – ToniTornado