在 vanilla ruby 中,如果我在默认主作用域中创建方法:
def asdf
puts "asdf"
end
def qwer
puts "qwer"
end
如何列出这些功能?
我尝试了以下方法,但没有成功:
methods.grep(/asdf|qwer/)
self.methods.grep(/asdf|qwer/)
Object.methods.grep(/asdf|qwer/)
Object.instance_methods.grep(/asdf|qwer/)
我在 Windows 10 上运行 ruby,通过 https://scoop.sh/:
安装> ruby --version
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x64-mingw-ucrt]
在主作用域中创建的方法(这些是方法而不是函数)是私有可见性。
这意味着您在错误的地方寻找它们。
相反,当您处于主作用域时执行
private_methods
,因为这将列出为 Object
定义的私有方法,这就是 main
作用域所在的位置。
示例:
def asdf
puts "asdf"
end
def qwer
puts "qwer"
end
puts private_methods.grep(/asdf/)