在 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
范围所在的位置。例子: