Ruby:如何列出在主作用域中声明的方法

问题描述 投票:0回答:1

在 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]
ruby
1个回答
0
投票

在主作用域中创建的方法(这些是方法而不是函数)是私有可见性。

这意味着您在错误的地方寻找它们。

相反,当您处于主作用域时执行

private_methods
,因为这将列出为
Object
定义的私有方法,这就是
main
作用域所在的位置。

示例:

def asdf
    puts "asdf"
end

def qwer
    puts "qwer"
end

puts private_methods.grep(/asdf/)
© www.soinside.com 2019 - 2024. All rights reserved.