如何在irb中创建和存储方法和类?

时间:2012-01-20 12:51:24

标签: ruby ide persistence smalltalk irb

我正在学习Ruby。我知道Ruby受Smalltalk的影响很大。 Smalltalk IDE提供基于图像的持久性,这意味着可以在运行的映像中添加方法和类。

在Ruby irb中是否可以这样做?

2 个答案:

答案 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.

怪异。