パッチのようなもの

gorubyを触ってて思ったこと。

  • Object#displayはselfを返して欲しい。
  • FloatもIntegerっぽく使いたい。(e.g. 100000.m → 1e5.m)
class Object
  def display(out = $stdout)
    out.print self
    self
  end
end

class Float
  (0.methods - 0.0.methods).each do |meth|
    eval <<-DEFS
    def #{meth}(*args, &block)
      to_i.#{meth}(*args, &block)
    end
    DEFS
  end
end

$,, $\ = ?|, ?_
true.di && false.di # => true|_|_

p 1e1.s_{|i|-i} # => [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
p -~1.2 # => 2

こんな感じ。元のdisplayで$,と$\が反映されないのはナゼ?