반응형
Ruby에서 노드를 상수로 변환하는 방법은 무엇입니까?
문자열 "User"
을 어떻게 CHAPTER 2 User
합니까?
Object.const_get("User")
ActiveSupport가 필요하지 않습니다.
Module#const_get
방법을 사용할 수 있습니다 . 예 :
irb(main):001:0> ARGV
=> []
irb(main):002:0> Kernel.const_get "ARGV"
=> []
ActiveSupport 가로 드 된 경우 (예 : Rails에서) 다음을 사용할 수 있습니다.
"User".constantize
권장되는 방법은 ActiveSupport의 상수 화를 사용하는 것입니다.
'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
루비 매직 방법 사용 : eval()
:
eval("User") #=> User
참고 URL : https://stackoverflow.com/questions/2361347/how-to-convert-a-string-to-a-constant-in-ruby
반응형
'ProgramingTip' 카테고리의 다른 글
PHP의 datetime에서 AM / PM을 얻는 방법 (0) | 2020.11.22 |
---|---|
Unix에서 재귀 적 mkdir () 시스템 호출 (0) | 2020.11.22 |
배열에서 n 개의 요소를 무작위로 얻는 방법 (0) | 2020.11.22 |
Visual Studio의 기본 네임 명명 규칙과 싸움을 중지해야합니까? (0) | 2020.11.21 |
Android : Proguard에 권장되는 구성은 무엇입니까? (0) | 2020.11.21 |