Ruby 是否有 `python -i` 的版本?
Does Ruby have a version of `python -i`?
我已经找了一段时间了,但是我在Ruby中没有找到任何像python
的-i
标志的东西。
如果我正在测试某些东西,我的常见行为是 运行 带有 -i
标志的未完成的 python
脚本,这样我就可以看到并使用其中的值每个变量。
如果我尝试 irb <file>
,它仍然会在 EOF
处终止,而且显然 ruby <file>
也不起作用。是否缺少我缺少的命令行标志,或者可以通过其他方式实现此功能?
编辑: 添加了对我所说的功能类型的解释。
Python
中的当前行为
file.py
a = 1
命令提示符
$ python -i file.py
>>> a
1
如您所见,变量 a
的值也在控制台中可用。
您可以使用命令irb。启动后,您可以使用 load './filename.rb'
加载和执行任何 ruby 文件
Is there a command-line flag that I'm missing, or some other way this functionality can be achieved?
是的,两者都有。我将介绍 "other way"。
从 ruby 2.5 开始,您可以在代码的某个位置放置一个 binding.irb
,然后程序将在那时进入交互式控制台。
% cat stop.rb
puts 'hello'
binding.irb
然后
% ruby stop.rb
hello
From: stop.rb @ line 3 :
1: puts 'hello'
2:
=> 3: binding.irb
irb(main):001:0>
以前很长一段时间都是可能的,pry
。但现在它在标准包中。
您可以使用 irb -r ./filename.rb
(-r
用于 "require"),这与 python -i ./filename.py
.
基本相同
编辑 以更好地回答精炼的问题:
实际上,irb -r ./filename.rb
相当于 运行 irb
和随后的 运行
irb(main):001:0> require './filename.rb'
。因此,来自 filename.rb
的局部变量不会最终出现在检查范围内。
python -i ./filename.py
似乎相当于将 binding.irb
添加到文件的最后一行,然后 运行 添加 ruby ./filename.rb
。似乎没有 one-liner 等同于实现 ruby.
的这种确切行为
我已经找了一段时间了,但是我在Ruby中没有找到任何像python
的-i
标志的东西。
如果我正在测试某些东西,我的常见行为是 运行 带有 -i
标志的未完成的 python
脚本,这样我就可以看到并使用其中的值每个变量。
如果我尝试 irb <file>
,它仍然会在 EOF
处终止,而且显然 ruby <file>
也不起作用。是否缺少我缺少的命令行标志,或者可以通过其他方式实现此功能?
编辑: 添加了对我所说的功能类型的解释。
Python
中的当前行为file.py
a = 1
命令提示符
$ python -i file.py
>>> a
1
如您所见,变量 a
的值也在控制台中可用。
您可以使用命令irb。启动后,您可以使用 load './filename.rb'
Is there a command-line flag that I'm missing, or some other way this functionality can be achieved?
是的,两者都有。我将介绍 "other way"。
从 ruby 2.5 开始,您可以在代码的某个位置放置一个 binding.irb
,然后程序将在那时进入交互式控制台。
% cat stop.rb
puts 'hello'
binding.irb
然后
% ruby stop.rb
hello
From: stop.rb @ line 3 :
1: puts 'hello'
2:
=> 3: binding.irb
irb(main):001:0>
以前很长一段时间都是可能的,pry
。但现在它在标准包中。
您可以使用 irb -r ./filename.rb
(-r
用于 "require"),这与 python -i ./filename.py
.
编辑 以更好地回答精炼的问题:
实际上,irb -r ./filename.rb
相当于 运行 irb
和随后的 运行
irb(main):001:0> require './filename.rb'
。因此,来自 filename.rb
的局部变量不会最终出现在检查范围内。
python -i ./filename.py
似乎相当于将 binding.irb
添加到文件的最后一行,然后 运行 添加 ruby ./filename.rb
。似乎没有 one-liner 等同于实现 ruby.