[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44435] Re: コンストラクタの引数について&インスタンス変数の持ち方について

From: rubikitch@...
Date: 2008-01-04 17:11:01 UTC
List: ruby-list #44435
From: Akira Hayakawa <ruby@i-mail.jp>
Subject: [ruby-list:44431] コンストラクタの引数について&インスタンス変数の持ち方について
Date: Sat, 5 Jan 2008 00:16:02 +0900

> 今、ある座標上の点を表すクラスPointというものを考えます。
> このPointは当然、x座標とy座標を持つと思いますが、ここで質問です。
> 
> class Point
>   def initialize(x, y)
>     @x = x
>     @y = y

構造体を使う解法もあります。

# Pointクラスを定義。
# ただ座標を表すだけならば構造体を使えばたった一行だけで定義できる。
Point = Struct.new :x, :y  
# p1 は (3, 4) 
p1 = Point.new 3, 4             # => #<struct Point x=3, y=4>
p1.x                            # => 3
p1.y                            # => 4
# もし、原点からの距離を求めるメソッドが欲しければPointクラスを開けば
# メソッドを追加できる。Rubyならばこんな芸当も可能。
class Point
  # 原点からの距離
  def radius
    # hypotはhypotenuse(斜辺)の意味。
    # もちろん Math.sqrt(x*x + y*y)でもよい。
    # 構造体ではxとyという(変数に見えるが)メソッドが定義されている。
    Math.hypot(x, y)
  end
end
# さっそくp1にradiusメソッドを適用してみる。
p1.radius                       # => 5.0

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

In This Thread