Proc#==
如何评估?RDoc说:
prc == other_proc → true or false
如果prc和other_proc是同一对象或者都是具有相同主体的procs,则返回true。
但是不清楚什么算“拥有相同的主体”。一个条件似乎是arity必须相同:
->{} == ->{} # => true
->{} == ->x{} # => false
->x{} == ->x{} # => true
->x{} == ->y{} # => true
->x{} == ->y,z{} # => false
但这不仅仅是如此。正如RDoc所说,正文内容也很重要:
->{nil} == ->{nil} # => true
->{nil} == ->{false} # => false
->{false} == ->{false} # => true
但是同时它看起来似乎这个过程没有完全被求值:
->{} == ->{nil} # => false
->{false} == ->{1 == 2} # => false
身体评估的程度有多高?
->{nil} == ->{nil; nil} #=> true
或者第一个nil被剥离了,因为它没有任何影响或意义? - Alex Waynea,b = ->{}, ->{}; a == b #=> true
,但是a = ->{} [newline] b = ->{}; a == b #=> false
。请注意,换行符必须是一个换行符;如果使用分号,则a
等于b
。真是令人困惑。 - Zach Kemp