-PR-
解決済み

Ruby の 文法に困ってます。

  • 困ってます
  • 質問No.5370106
  • 閲覧数17
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

以下のようなソースの場合、to_sメソッドは何時呼ばれているのでしょうか。またどういう意味を成しているのでしょうか。

Ruby初心者のためご教授頂けないでしょうか。
よろしくお願いします。


class Vector
  attr_accessor :x, :y
  def initialize(x=0, y=0)
    @x = x
    @y = y
  end
  def length
    Math::sqrt(@x ** 2 + @y ** 2)
  end
  def to_s
     "(#{@x},#{@y})"
  end
  def <=> other
    length <=> other.length
  end
end

arr =[]
arr << Vector.new(2,2)
arr << Vector.new(3,2)
arr << Vector.new
arr.sort.each do |item|
  puts item
end

結果は以下になります。
(0,0)
(2,2)
(3,2)
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 48% (4279/8752)

おおざっぱに言うと、puts の引数がStringクラスのオブジェクトで無いときは、その引数オブジェクトに対してto_sメソッドが呼ばれます。
to_s というのは主に出力のための文字列化メソッドです。

正確にはリファレンスのputsの所を見てください。
お礼コメント
mitu1200

お礼率 100% (1/1)

御回答ありがとうございます。
理解できました。
リファレンスを熟読しようと思います。
投稿日時 - 2009-10-17 14:44:23
このQ&Aのテーマ
このQ&Aで解決しましたか?
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

-PR-
ページ先頭へ