在终端('irb')中启动一个交互式 Ruby shell,可以继续无休止地打开 irb 子shell。这有什么意义?
问问题
312 次
1 回答
7
到目前为止,我已经看到了 irb 子会话可以为您做的三件有用的事情:
- 取消定义局部变量
- 更改
self
irb 会话 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
: 切换到子会话kill
: 杀死一个子会话
有关详细信息,请参阅这个有趣的 SO 答案。
于 2013-05-03T18:53:21.537 回答