0

我正在尝试 Pry 主代码 REPL 编辑器。

我发现这与我想要的非常接近,但我不太了解如何使用它。我想知道如何在类中添加/修改/删除每个方法(或任何其他成员)。

当我尝试这个时,

➜  ~  pry
[1] pry(main)> class AAA
[1] pry(main)*   def bbb
[1] pry(main)*     "ccc"
[1] pry(main)*   end  
[1] pry(main)* end  
=> nil
[2] pry(main)> cd AAA
[3] pry(AAA):1> ls
AAA#methods: bbb
locals: _  __  _dir_  _ex_  _file_  _in_  _out_  _pry_
[4] pry(AAA):1> def xxx
[4] pry(AAA):1*   "yyy"
[4] pry(AAA):1* end  
=> nil
[5] pry(AAA):1> def xxx
[5] pry(AAA):1*   "zzz"
[5] pry(AAA):1* end  
=> nil
[6] pry(AAA):1> cd ..
[7] pry(main)> Pry.WrappedModule(AAA).source
=> "class AAA\n  def bbb\n    \"ccc\"\n  end\nend\ndef xxx\n  \"yyy\"\nend\ndef xxx\n  \"zzz\"\nend\n"
[8] pry(main)> AAA.new.xxx
=> "zzz"
[9] pry(main)> 

它像我预期的那样运作良好。但是源代码包含重复的xxx方法定义。如果我想删除较旧的一个(或两者),我该怎么做?另外,如果我想删除现有方法(或任何其他成员)而不更换新方法,我该怎么做?

PS我这样做主要是为了在内存和磁盘之间编辑、存储和恢复类源代码。(一种基于图像的持久化)

4

1 回答 1

0

我找到了答案。使用undef命令。

[11] pry(main)> cd AAA
[13] pry(AAA):1> ls
AAA#methods: bbb  xxx
locals: _  __  _dir_  _ex_  _file_  _in_  _out_  _pry_
[14] pry(AAA):1> undef xxx
=> nil
[15] pry(AAA):1> ls
AAA#methods: bbb
locals: _  __  _dir_  _ex_  _file_  _in_  _out_  _pry_
[16] pry(AAA):1> cd ..
[17] pry(main)> Pry.WrappedModule(AAA).source
=> "class AAA\n  def bbb\n    \"ccc\"\n  end\nend\n"
[18] pry(main)> 
于 2013-10-10T04:36:19.537 回答