Clojure是否等效于ruby的#methods方法?

vis*_*nth 2 ruby functional-programming clojure

在ruby中,我们可以Object.methods获取特定Object或类的所有方法。

例如:

irb(main):001:0> Object.methods
=> [:new, :allocate, :superclass, :<=>, :include, :<=, :>=, :==, :===, :included_modules, :include?, :name, :ancestors, :instance_methods, :public_instance_methods, :protected_instance_methods, :private_instance_methods, :constants, :const_get, :const_set, :const_defined?, :class_variables, :remove_class_variable, :class_variable_get, :class_variable_set, :class_variable_defined?, :public_constant, :private_constant, :deprecate_constant, :singleton_class?, :module_exec, :class_exec, :freeze, :inspect, :const_missing, :class_eval, :method_defined?, :public_method_defined?, :prepend, :<, :>, :private_method_defined?, :protected_method_defined?, :public_class_method, :module_eval, :to_s, :private_class_method, :autoload, :autoload?, :instance_method, :public_instance_method, :instance_of?, :kind_of?, :is_a?, :tap, :public_send, :remove_instance_variable, :instance_variable_set, :method, :public_method, :singleton_method, :extend, :define_singleton_method, :to_enum, :enum_for, :=~, :!~, :eql?, :respond_to?, :object_id, :send, :display, :nil?, :hash, :class, :singleton_class, :clone, :dup, :itself, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variable_get, :instance_variables, :instance_variable_defined?, :!, :!=, :__send__, :equal?, :instance_eval, :instance_exec, :__id__]
Run Code Online (Sandbox Code Playgroud)

我们可以在Clojure repl中做类似的事情吗(例如:leiningen)?

sau*_*mar 7

如何列出名称空间的功能?这是一个类似的问题,请转到链接以获取完整说明。

在Clojure中,我们没有类,但是函数被分组到名称空间中。使用,ns-publics您可以获得该命名空间中所有功能的映射。

(keys (ns-publics 'user))
; => (clojuredocs help find-name user.proxy$java.lang.Object$SignalHandler$d8c00ec7 cdoc apropos-better)
Run Code Online (Sandbox Code Playgroud)