3

在终端('irb')中启动一个交互式 Ruby shell,可以继续无休止地打开 irb 子shell。这有什么意义?

4

1 回答 1

7

到目前为止,我已经看到了 irb 子会话可以为您做的三件有用的事情:

  1. 取消定义局部变量
  2. 更改selfirb 会话
  3. 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

更改selfirb 会话

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 回答