あなたの知らないRuby 1.9 (1)

Ruby:r14162 (trunk): * parse.y (expr): redefinable not (!) operator.

これははっきり言ってギャッと言いたいけど、RSpec使いとしてはまつもとさんの意見も分からなくはない。何にしても、もうリリースされちゃったしね。

そういうわけで、再定義可能な演算子が増えました。これでハムレットも悩まなくて済みますね。

class Object
  def !
    nil
  end
end

p !false      #=> nil
p !!false     #=> nil
p (!false).equal?(!!false) #=> true