<< 前 ホーム 次 >>

bakaid: 20080103

Rubyの話。やっぱりメソッド呼び出しのカッコを省ける
っていうのはいいですね。たとえば、矩形の表現って
いくつかあるわけですけど:

class Rect
  def initialize(x, y, width, height)
    @x = x
    @y = y
    @width = width
    @height = height
  end
  attr_accessor :x, :y, :width, :height
end

とか:

class Rect
  def initialize(left, top, right, bottom)
    @left = left
    @top = top
    @right = right
    @bottom = bottom
  end
  attr_accessor :left, :top, :right, :bottom
end

でも、Rubyだったら、これを分けなくっても、どれも
カッコなしでメンバにアクセスできる:

class Rect
  def initialize(x, y, width, height)
    @x = x
    @y = y
    @width = width
    @height = height
  end
  attr_accessor :x, :y, :width, :height
  alias_method :left, :x
  alias_method 'left=', 'x='
  alias_method :top, :y
  alias_method 'top=', 'y='

  def right
    return @x + @width
  end

  def right=(n)
    @width = n - @x
  end

  def bottom
    return @y + @height
  end

  def bottom=(n)
    @height = n - @y
  end
end

r=Rect.new(1,2,3,4)
print'x=';p r.x
print'y=';p r.y
print'w=';p r.width
print'h=';p r.height
print'l=';p r.left
print't=';p r.top
print'r=';p r.right
print'b=';p r.bottom

おっと、最後はちょっとゴルフ風味 (笑)。

setterはちょっと面倒ですけど (っていうか忘れてた (笑))
でも、setter自体、必要かどうか怪しいことも多いですしね。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails