ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:mitu1200 Ruby の 文法に困ってます。
困り度:
  • 困っています
以下のようなソースの場合、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)
質問投稿日時:09/10/15 21:38
質問番号:5370106
この質問に対する回答は締め切られました。

回答

良回答20pt

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

正確にはリファレンスのputsの所を見てください。
種類:回答
どんな人:一般人
自信:自信あり
回答日時:09/10/16 01:14
回答番号:No.1
この回答へのお礼御回答ありがとうございます。
理解できました。
リファレンスを熟読しようと思います。