Complexクラス

Complexクラスで複素数が扱えます。Complex::Iが虚数単位iに相当しますが、Complex(0, 1)とequal?ではありません。なぜでしょうね。

require "complex"

p Complex(0, 1)     # => Complex(0, 1)
p Complex::I        # => Complex(0, 1)

if Complex(0, 1).equal?(Complex::I)
    puts "Same ... equal?"
else
    puts "Different ... equal?"     # こちら
end

if Complex(0, 1) == (Complex::I)
    puts "Same ... =="              # こちら
else
    puts "Different ... =="
end