ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  420  : 記事  0  : コメント  9488  : トラックバック  76

ニュース

さて、今年は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

さて、カプセル化でおなじみの getter, setter ですが。
Java ならこうですね。
private int _field1;
private int _field2;
private int _field3;
public int getField1() {
    return _field1;
}
public void setField1(int field1) {
    _field1 = field1;
}
public int getField2() {
    return _field2;
}
public void setField2(int field2) {
    _field2 = field2;
}
public int getField3() {
    return _field3
}
public void setField3(int field3) {
    _field3 = field3;
}

C#ならこう。
private int _field1;
private int _field2;
private int _field3;
public int Field1 {
    get { return _field1; }
    set { _field1 = value; }
}
public int Field2 {
    get { return _field2; }
    set { _field2 = value; }
}
public int Field3 {
    get { return _field3; }
    set { _field3 = value; }
}

Ruby なら、同様に書くとこうなるようです。
def field1
  return @field1
end
def field1=(new_field1)
  @field1 = new_field1
end
def field2
  return @field2
end
def field2=(new_field2)
  @field2 = new_field2
end
def field3
  return @field3
end
def field3=(new_field3)
  @field3 = new_field3
end
これで field1 という属性(Ruby では属性と呼ぶらしい)に対して、値の取得も設定もできます。
使い方は C# のプロパティと同じ使い方ですが、定義は getter と setter の二種類必要なので、C# と Java の中間のイメージ。
ところが Ruby では上記の例のようなシンプルな属性の場合、こちらで OK。
attr_accessor :field1, :field2, :field3
また、下記でもOK。
attr_reader :field1, :field2, :field3
attr_writer :field1, :field2, :field3
attr_writer の後を調整すれば読み取り専用属性も可能。
さすが後発。これは楽だ。
投稿日時 : 2008年1月24日 0:36

コメント

# いまさら1月PV 2008/02/05 17:08 へぼろっぱぁ
いまさら1月PV

Post Feedback

タイトル
名前
Url:
コメント: