我正在学习Ruby。我知道Ruby受Smalltalk的影响很大。 Smalltalk IDE提供基于图像的持久性,这意味着可以在运行的映像中添加方法和类。
在Ruby irb
中是否可以这样做?
答案 0 :(得分:3)
不,那只是小话题。但您可以使用maglev ruby来恢复smalltalk VM。
您可以使用pry及其edit
命令编辑磁盘上的代码,shell负责重新加载。但是你无法保存会话,只能保存你写入磁盘的代码。
答案 1 :(得分:3)
@Tass有点误。使用Pry您确实可以编辑您在控制台上编写的方法,但只能编辑方法。例如:
pry(main)> def foo
pry(main)* "bar"
pry(main)* end
=> nil
pry(main)> edit-method foo
=> nil
## launches editor
pry(main)> class Foo
pry(main)* def bar
pry(main)* "qux"
pry(main)* end
pry(main)* end
=> nil
pry(main)> edit-method Foo#bar
=> nil
## launches editor
两种情况都有效,因此您可以在编辑器中保存和修改方法。但是你无法做到,例如edit-class Foo
。
但它确实至少有一个限制:
pry(main)> class Foo; def bar; "baz" end end
=> nil
pry(main)> edit-method Foo#bar
Error: Pry can only patch methods created with the `def` keyword.
怪异。