Jak przekonwertować ciąg na User
?Jak przekonwertować ciąg na stałą w Ruby?
Odpowiedz
Można użyć metody Module#const_get
. Przykład:
irb(main):001:0> ARGV
=> []
irb(main):002:0> Kernel.const_get "ARGV"
=> []
Jeśli masz ActiveSupport ładowane (np Rails) można użyć
"User".constantize
Zalecanym sposobem jest użycie ActiveSupport za constantize:
'User'.constantize
Można również użyć Kernela const_get
, ale w języku Ruby < 2.0 nie obsługuje stałych ze spacjami, więc coś takiego:
Kernel.const_get('Foobar::User')
zakończy się niepowodzeniem w Ruby < 2.0. Więc jeśli chcesz rodzajowe rozwiązanie, chcesz być mądry, aby stosowanie metody 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
const_get działa również dla stałych o stałych z nazwami od ruby 2.0 – untidyhair
Ponieważ Ruby 2.0 osiągnął EOL, nie ma już potrzeby ciągnięcia ActiveSupport jako zależności od stałej w łańcuchu. :-) – Drenmi
Zobacz także "User'.safe_constantize" –
Object.const_get("User")
Nie trzeba wymagać ActiveSupport.
+1 chory na active_support zanieczyszczający ogólne pytania rubinowe. –
Zastosowanie rubin magiczna metoda: eval()
:
eval("User") #=> User
Jest to prawdopodobnie kompletna przesada, ponieważ 'eval' nie ma być używana w ten sposób, a unikanie bardziej konkretnych alternatyw powinno być całkowicie unikane. – yagooar
- 1. Jak przekonwertować ciąg znaków na UTF8 w Ruby
- 2. Jak przekonwertować obiekt IO na ciąg w Ruby?
- 3. Ciąg ruby na ósemkowy?
- 4. Jak przekonwertować ciąg ruby za pomocą nawiasów na tablicę?
- 5. Jak przekonwertować ciąg znaków na liczbę dziesiętną?
- 6. jak przekonwertować ciąg c na ciąg d?
- 7. Jak przekonwertować ciąg na CharSequence?
- 8. Jak przekonwertować BeautifulSoup.ResultSet na ciąg
- 9. Jak przekonwertować uint32 na ciąg?
- 10. Jak przekonwertować ciąg na NSData
- 11. Jak przekonwertować znak na ciąg?
- 12. Jak przekonwertować JSON na ciąg?
- 13. Jak przekonwertować ciąg na bitset?
- 14. Jak przekonwertować ciąg na długi
- 15. jak przekonwertować NSinteger na ciąg
- 16. Konwersja ciąg określony stałą w PHP
- 17. jak przekonwertować stałą ciągową na token przetwarzania wstępnego w C
- 18. Jak przekonwertować ciąg na BigInteger?
- 19. Jak przekonwertować ciąg [] na ArrayList?
- 20. Jak przekonwertować Writer na ciąg
- 21. Jak przekonwertować ciąg na android.net.Uri
- 22. jak przekonwertować ciąg do obiektu Date w Ruby
- 23. Jak przekonwertować hasz na ciąg JSON w Rubim 1.9?
- 24. Jak przekonwertować stringstream na ciąg w C++?
- 25. Jak przekonwertować ciąg na liczbę w Perlu?
- 26. Jak przekonwertować ciąg na float w JavaScript?
- 27. Jak przekonwertować ciąg na float w mysql?
- 28. Jak przekonwertować FileInputStream na ciąg w java?
- 29. Jak przekonwertować ciąg na boolowskie w ActionScript?
- 30. Jak przekonwertować ciąg na datę w sybase
Próbujesz wywołać funkcję zmiennej? – harbichidian
Chciałbym także odpowiedzi na to pytanie; jednak czy próbujesz utworzyć nową stałą na podstawie ciągu znaków LUB znaleźć już zainicjowaną stałą? Szukasz również rubinu waniliowego lub Rails? – onebree