【问题标题】:How to add/modify/delete a method in Pry?如何在 Pry 中添加/修改/删除方法?
【发布时间】:2013-10-10 04:30:17
【问题描述】:

我正在尝试 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 方法的重复定义。如果我想删除较旧的一个(或两者),我该怎么做?另外,如果我想删除现有方法(或任何其他成员)而不更换新方法,我该怎么做?

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

【问题讨论】:

    标签: ruby read-eval-print-loop pry


    【解决方案1】:

    我找到了答案。使用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)> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2021-06-23
      • 2022-10-05
      • 2021-12-28
      • 1970-01-01
      相关资源
      最近更新 更多