to_sメソッドを構築する際に問題があります。オブジェクトを参照するto_sの複数行構文
class Personne
attr_accessor :prenom, :nom, :email, :telephone, :adresse
def initialize
@prenom = @nom = @email = @telephone = ""
@adresse = Adresse.new
end
def to_s
@prenom + ", " + @nom + "\n" + \
"Email: " + @email + "\n" + \
"Tel: " + @telephone + "\n" + \
@adresse
end
end
@adresseは、非常によく似たメソッドです。 エラー:
in `+': no implicit conversion of Adresse into String (TypeError)
アドレスオブジェクトは、それ自身のprintメソッドを持っているので、私は、問題を理解していません。
しかし、オブジェクトに対して '+'を呼び出すだけです。 '@ adrense.to_s'を実行しようとしました – Aleksey
ありがとう、それはうまくいきましたが、どうしてobjctのto_sを明示的に呼び出す必要があるのかわかりません:/ – user3685089
' @prenom = @nom = @email = @telephone = "" 'は可変文字列の変更に副作用があります:' @email << "[email protected]" 'は他のインスタンス変数の予期しない変更をもたらします。 – mudasobwa