instance method BasicObject#!=

self != other -> bool[permalink][rdoc][edit]

オブジェクトが other と等しくないことを判定します。

デフォルトでは self == other を評価した後に結果を論理否定して返します。このため、サブクラスで BasicObject#== を再定義しても != とは自動的に整合性がとれるようになっています。

ただし、 BasicObject#!= 自身や BasicObject#! を再定義した際には、ユーザーの責任で整合性を保たなくてはなりません。

このメソッドは主に論理式の評価に伴って副作用を引き起こすことを目的に再定義するものと想定されています。

[PARAM] other:
比較対象となるオブジェクト

[SEE_ALSO] BasicObject#==, BasicObject#!



class NonequalityRecorder < BasicObject
  def initialize
    @count = 0
  end
  attr_reader :count

  def !=(other)
    @count += 1
    super
  end
end
recorder = NonequalityRecorder.new

recorder != 1
puts 'hoge' if recorder != "str"

p recorder.count #=> 2