这是一个非常难以找到答案的问题。
(一些问题似乎在问一些至少相似的东西,比如:
Ruby console alternative for IRB (Windows)
IDLE like interactive console for Ruby
A recommended Ruby interactive console
但我无法从其中任何一个得到我想要的东西。)
另外,我对我应该使用的确切术语有点不确定,所以我会尝试在这里真正具体:
假设您正在将IDLE与Python shell一起使用。
你有一个IDLE的文本编辑器窗口,其中包含一个脚本“example.py”。
你点击了F5并且Python shell出现并完全按照你将“example.py”中的每一行逐行输入shell的方式做了。
从功能上来说,它正在做的就是自动进入每一行,只是通过显示它们而不会使屏幕混乱。 (此外,每次执行此操作时,它都会将shell重置为一个新状态,但这并不是当前重要的一点;有时可以选择让它不重置shell的状态,无论如何。)
所以结果是现在你可以在shell中玩,并且你刚刚运行的脚本中的所有函数和变量等都在那里。
但是有了... ...
我如何获得相同的效果?
例如,我在Windows控制台中尝试了irb example.rb
(一个等效的ruby脚本),它只是逐字地将每行输入到irb中,将它们喷到屏幕上,然后自动退出到Windows命令提示符。
(虽然即使那个 以我想要的方式工作(是否有一些选项旗帜争论的东西会让它在我这里做的更多吗?),我仍然需要alt-从文本编辑器到控制台窗口的选项卡,输入命令和文件名,这不如按F5,obvs。)
为了让真的确定我明白我的意思,这里有具体的例子:
1)“example.py”的Python脚本 2)在shell中运行它然后在shell中做一些事情的例子(从实际的shell复制粘贴)
3)与Python相同的Ruby脚本 4)在repl.it的kludgy,慢速在线解释器中运行它的一个例子,并在irb shell中执行完全相同的操作(再次,复制粘贴)
1)example.py:
x = "some value you don't want to keep reassigning to this variable"
y = "some other value like that"
def some_function(var):
return "do something complicated with `"+var+"`"
print("example.py just ran")
2)Python shell:
Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
example.py just ran
>>> x
"some value you don't want to keep reassigning to this variable"
>>> y
'some other value like that'
>>> print(some_function(x))
do something complicated with `some value you don't want to keep reassigning to this variable`
>>> x = "a frog"
>>> print(some_function(x))
do something complicated with `a frog`
>>> print("gonna run example.py again")
gonna run example.py again
>>> ================================ RESTART ================================
>>>
example.py just ran
>>> print("x is back to: `\""+x+"\"`")
x is back to: `"some value you don't want to keep reassigning to this variable"`
3)example.rb:
x = "some value you don't want to keep reassigning to this variable"
y = "some other value like that"
def some_function var
"do something complicated with `#{var}`"
end
puts "test.rb just ran"
4)repl.it上的在线Ruby irb shell事件:
Ruby 1.8.7 (2008-05-31 patchlevel 0) [x86-linux]
[GCC 4.2.1 (LLVM, Emscripten 1.5, Emscripted-Ruby)]
test.rb just ran
=> nil
x
=> "some value you don't want to keep reassigning to this variable"
y
=> "some other value like that"
puts some_function x
do something complicated with `some value you don't want to keep reassigning to this variable`
=> nil
x = "a frog"
=> "a frog"
puts some_function x
do something complicated with `a frog`
=> nil
puts "gonna run this script again..."
gonna run this script again...
=> nil
test.rb just ran
=> nil
puts "x is back to: `\"#{x}\"`"
x is back to: `"some value you don't want to keep reassigning to this variable"`
=> nil
答案 0 :(得分:1)
我到目前为止找到的最佳答案似乎是安装 pry (在命令提示符下输入gem install pry
)。
现在,如果您通过输入pry scriptname.rb
来运行脚本,并且遇到异常,它将自动进行交互。
此外,如果您在顶部的脚本中添加require 'pry'
,那么您可以在脚本中放置binding.pry
。
现在,当您运行脚本时(只需在命令提示符处输入scriptname.rb
),它将停止执行并在此时进行交互式处理。
按^ D(即ctrl-d)将继续执行。
当您在编辑器中按F5(或其他)时,在命令提示符窗口中运行脚本(例如,Notepad ++)显然有些棘手。 Solutions like this有一些问题,我还没弄清楚如何进行调整。
所以目前我只是对命令提示符窗口进行alt-tabbing并从那里运行脚本(再次输入pry scriptname.rb
或只是scriptname.rb
,具体取决于我想要什么以及是否我在脚本中放了一个binding.pry
。向上箭头调用,标签完成,等等等等。)
答案 1 :(得分:0)
我不确定100%是否是您想要的,但是根据我的经验,使用x
将运行代码