to_source由sourcify gem提供。
我想知道如何创建这些方法?
hello = Proc.new{ 2.times{ puts 'hi' } }
hello.to_source #=> 2.times{ puts 'hi' }
hello.call #=> 'hi' 'hi'
hello.change_hi_to_bye!
hello.to_source #=> 2.times{ puts 'bye' }
hello.call #=> 'bye' 'bye'
hello.get_rid_of_block!
hello.to_source #=> 2.times
hello.call #=>我会对get_rid_of_block!方法感兴趣。一些通用的东西,可以从一个proc中的所有方法中剥离所有块。
我对RubyVM::InstructionSequence.of(my_proc).to_a进行了简单的研究,以期改变构建顺序(我以为会有一个很好的小:attach_block字段可以删除,但不幸的是我看不到它。
发布于 2015-07-29 23:16:13
您可以使用method_missing(http://ruby-doc.org/core-2.1.0/BasicObject.html#method-i-method_missing)提供这些或类似的方法。只需将方法名命名为string,用“_”将其拆分,然后生成一些您需要的东西。它是某种构建器的模式实现。
https://stackoverflow.com/questions/31689373
复制相似问题