在irb中,为什么有预定义的变量“d”?

时间:2012-06-12 15:08:06

标签: ruby irb

由于某种原因,我输入irb后立即定义了一个名为d的变量。知道它是什么吗?

3 个答案:

答案 0 :(得分:6)

您是否有机会使用irbtools?如果是,则有一个名为d的预定义方法,大致如下所示:

def d
  self.tap { |v| puts v }
end

它可用于调试消息链,如下所示:obj.some_method.d.other_method

由于它是在Object级别定义的,所以如果你只是在IRB顶层调用它,它将会返回main

答案 1 :(得分:4)

您可以使用irb开关运行-f以暂停加载~/.irbrc

irb -f

这会很快告诉您d是否来自您~/.irbrc的某个地方(最有可能的是 - 请参阅Michael的回答)。

答案 2 :(得分:2)

不适合我:

$ irb
>> d
NameError: undefined local variable or method `d' for main:Object
        from (irb):1