dan*_*die 42 ruby discoverability
找出ruby对象暴露的方法/属性的简单方法是什么?
作为获取字符串成员信息的示例,您可以在PowerShell中执行此操作
"" | get-member
Run Code Online (Sandbox Code Playgroud)
在Python中,
dir("")
Run Code Online (Sandbox Code Playgroud)
有没有这么简单的方法来发现Ruby对象的成员信息?
noo*_*odl 57
"foo".methods
Run Code Online (Sandbox Code Playgroud)
看到:
http://ruby-doc.org/core/classes/Object.html
http://ruby-doc.org/core/classes/Class.html
http://ruby-doc.org/core/classes/Module.html
Mar*_*mas 11
获取对象方法的两种方法:
my_object.methods
MyObjectClass.instance_methods
Run Code Online (Sandbox Code Playgroud)
我做的一件事是从Object基类修剪继承的方法列表:
my_object.methods - Object.instance_methods
Run Code Online (Sandbox Code Playgroud)
列出对象的属性:
object.attributes
Run Code Online (Sandbox Code Playgroud)
有两种方法可以实现这一点:
obj.class.instance_methods(false)
,其中 'false' 意味着它不会包含超类的方法,例如:
class Person
attr_accessor :name
def initialize(name)
@name = name
end
end
p1 = Person.new 'simon'
p1.class.instance_methods false # => [:name, :name=]
p1.send :name # => "simon"
Run Code Online (Sandbox Code Playgroud)
另一个是:
p1.instance_variables # => [:@name]
p1.instance_variable_get :@name # => "simon"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32779 次 |
最近记录: |