每当我从IRB实例化一个新方法时,它会输出一些我认为不必要的东西.这是预期的行为吗?我可以阻止它发生吗?
例如,以下代码
class Box
def initialize(index)
@index = index
end
end
box = Box.new(5)
Run Code Online (Sandbox Code Playgroud)
将打印
#<Box:0x000000015836e8 @index=5>
Run Code Online (Sandbox Code Playgroud)
随着更复杂的东西,我在终端中获得了更多.
这是预期的,因为默认情况下会irb打印出最新评估的结果.
您可以使用noecho或附加;nil打印输出nil.
box = Box.new(5); nil
Run Code Online (Sandbox Code Playgroud)
这是预期的行为.irb是REPL(读取,评估,打印循环).这意味着它将打印评估您输入的每个连续表达式的结果.调用类的构造函数的结果是新对象.分配结果是指定的内容.
您可以覆盖Object#inspect类的方法来更改正在打印的内容:
class Box
def initialize(index)
@index = index
end
def inspect
"A box with index #{@index}"
end
end
box = Box.new(5)
# => >A box with index 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |