我有一段代码,我想在不运行块内部代码的情况下测试主体是否为空。这可能吗?
答案 0 :(得分:9)
sourcify
gem添加Proc#to_source
方法:
>> require 'sourcify'
=> true
>> p = Proc.new {}
=> #<Proc:0x000001028490b0@(irb):3>
>> p.to_source
=> "proc { }"
将块作为字符串后,很容易看出花括号之间是否有(或只有空格)。
答案 1 :(得分:7)
更新:Ruby 2.0+删除了块比较,因此不再仅使用内置方法。
Ruby用于比较Proc
,但是not great at it。例如,您可以:
def is_trivial_block?(&block)
block == Proc.new{}
end
is_trivial_block?{} # => true
is_trivial_block?{ 42 } # => false
# but caution:
is_trivial_block?{|foo|} # => false
因此,决定删除块比较,因此如果它们是同一个对象,则现在有两个块==
。