在终端('irb')中启动交互式Ruby shell,可以继续无休止地打开irb子shell。这有什么意义呢?
答案 0 :(得分:7)
到目前为止,我已经看到了三个有用的事情,我们可以为你做的事情:
self
irb
是一套优秀工具的一部分取消定义局部变量
嵌套的irb
启动一个新的子会话,其中不再定义所有局部变量(不是类,模块等)。
irb(main):001:0> a = 1
#=> 1
irb(main):002:0> irb
irb#1(main):001:0> a
NameError: undefined local variable or method `a' for main:Object from (irb#1):1
更改self
以进行irb会话
irb(main):001:0> self
#=> main
irb(main):002:0> irb "Hello World"
irb#1(Hello World):001:0> self
#=> "Hello World"
irb#1(Hello World):002:0> length
#=> 11
注意:这也称为irb会话的“更改绑定”。
顺便说一下:可以在不打开子句点的情况下更改绑定(cb
,irb_change-binding
都可以为您执行此操作)。但是通过subsession回到旧的绑定会更方便。
最好的是,irb
只是一组有用的命令之一
irb
:开始一个新的分会jobs
:列出子会话fg
:切换到subsession kill
:杀死一个次级有关详细信息,请参阅this insteresting SO answer。