解決済み

Ruby の 文法に困ってます。

  • 困ってます
  • 質問No.5370106
  • 閲覧数23
  • ありがとう数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)

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

  • 回答No.1

ベストアンサー率 48% (4345/8905)

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

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

お礼率 100% (1/1)

御回答ありがとうございます。
理解できました。
リファレンスを熟読しようと思います。
投稿日時 - 2009-10-17 14:44:23
感謝経済
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


感謝指数によるOK-チップ配布スタート!

ピックアップ

ページ先頭へ