Ich möchte wissen, wie jede Konstante auf dem Digest
Modul im Voraus programmgesteuert zu sehen. Das Verhalten unten zu sehen ist aufgrund const_missing
here verwendet:Alle Konstanten in "Digest" anzeigen
require 'digest'
Digest.constants
#=> [:Class, :REQUIRE_MUTEX, :Instance, :Base]
Digest::MD5
Digest.constants
#=> [:Class, :REQUIRE_MUTEX, :Instance, :Base, :MD5]
Digest::SHA1
Digest.constants
#=> [:Class, :REQUIRE_MUTEX, :Instance, :Base, :MD5, :SHA1]
Da sie in möglichst verdaut werden Metaprogrammierung, wie kann ich wissen, alle möglichen verfügbaren verdaut?
Für Wissen, diejenigen, die 2.4.1 in Ruby verfügbar zu sein scheinen sollte [:SHA256, :SHA384, :SHA512, :SHA1, :SHA2, :MD5, :RMD160]
Ein Weg ist es, in den Quellcode zu schauen: https://github.com/ruby/ruby/tree/trunk/ext/digest –
Außer dieser Kommentar scheint sonst zu sagen: https://github.com/ ruby/ruby / blob/trunk/ext/verdauen/lib/digest.rb # L103 Und Sie können SHA512 laden, die nicht in der Quelle ist. – BookOfGreg
Guter Punkt. Nun, da Konstanten lazy geladen sind, sehe ich nicht, wie Sie sie auflisten können, ohne sie bereits zu kennen. ¯ \\ _ (ツ) _/¯ –