我正在使用Ruby 2.6.3
Ruby ri将pp记录为:
以漂亮的形式打印参数。
无论如何,在文件中,当我编写并运行以下代码时:
#!/usr/bin/ruby -w
Kernel.pp 'hi'
pp 'hi'
Run Code Online (Sandbox Code Playgroud)
我收到NoMethodError。
但是以下代码如何工作?
#!/usr/bin/ruby -w
pp 'hi'
Kernel.pp 'hi'
Run Code Online (Sandbox Code Playgroud)
输出:
"hi"
"hi"
Run Code Online (Sandbox Code Playgroud)
这是截图
实际pp方法是在Ruby附带的模块(也称为)中实现的pp。对于较旧的红宝石,要使用该方法,必须始终运行
require 'pp'
pp "foo"
Run Code Online (Sandbox Code Playgroud)
较新的红宝石附带一种便捷方法,Kernel#pp该方法自动需要pp模块并运行该方法。首次调用此方法(并因此调用require模块的)后,将前一个方法替换为实际使用的pp方法。
因此,如果您首先运行实例方法pp(在包含Kernel模块的Ruby中所有对象(即关于所有对象)上作为私有方法可用的私有方法),则pp模块将被加载,其他方法(包括Kernel.pp类方法)将变为可用。
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |