我正在尝试使用主代码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
方法的重复定义。如果我想删除较旧的(或两者),我该怎么做?另外,如果我想删除现有方法(或任何其他成员)而不交换新方法,我该怎么做?
P.S。我这样做主要是为了在内存和磁盘之间编辑,存储和恢复类源代码。 (一种基于图像的持久性)
答案 0 :(得分: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)>