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

发布于 2024-12-28 05:15:29 字数 136 浏览 1 评论 0原文

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

Ruby 的irb 中也可能有同样的情况吗?

I'm studying Ruby. I know that Ruby was heavily influenced by Smalltalk. Smalltalk IDEs offer image based persistence, which means one can add methods and classes from within the running image.

Is the same possible in Ruby's irb?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

落在眉间の轻吻 2025-01-04 05:15:29

不,这只是闲聊。但是您可以使用 maglev ruby​​ 来恢复smalltalk VM。
您可以使用 pry 及其 edit 命令来编辑磁盘上的代码,shell 会执行照顾重新加载。但是您无法保存会话,只能保存写入磁盘的代码。

Nah, that's smalltalk only. But you can use maglev ruby to get the smalltalk VM back.
You can use pry and its edit command to edit code on the disk and the shell takes care of reloading. But you can't save the session, only the code you wrote to disk.

无边思念无边月 2025-01-04 05:15:29

@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.

奇怪。

@Tass is slightly mistaken. Using Pry you can indeed edit methods you've written on the console, but only methods. For example:

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

Both cases work, whereupon you can save and modify the method in your editor. However you can't do e.g. edit-class Foo.

It does have at least one limitation, though:

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.

Weird.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文