質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

610閲覧

オブジェクトの詳細メッセージを表示しないようにしたい。

ohs6261

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/04/22 10:43

最終行に表示されるメッセージを表示しないようにしたいです。
なぜこのようなメッセージが出力されてしまうのでしょうか。

下記のコードに問題があるのはわかっているんですが、理由がわかりません。
ご教授お願いいたします。

ruby

1@books.each do |arg| 2 puts arg

##実行結果

ruby

1Library contents: 2Title: Moby-Dick, Author: Herman Melville 3Title: The Ugly Duckling, Author: Hans Christian Andersen 4#<Library:0x00007ff00193b6f8>

##ソースコード

ruby

1class Library 2 def initialize 3 @books = [] 4 end 5 6 def <<(book) 7 @books << book 8 end 9 10 def to_s 11 puts "Library contents:" 12 @books.each do |arg| 13 puts arg 14 end 15 end 16 end 17 18 class Book 19 attr_accessor :author, :title 20 def initialize(args) 21 @author = args[:author] 22 @title = args[:title] 23 args[:library] << "Title: " + @title + ", Author: " + @author 24 end 25 end 26 27 28 29 30my_library = Library.new 31Book.new(:author => "Herman Melville", :title => "Moby-Dick", :library => my_library) 32Book.new(:author => "Hans Christian Andersen", :title => "The Ugly Duckling", :library => my_library) 33puts my_library

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

to_sは、出力するメソッドじゃなくて、文字列化するメソッドです。

同じ動作をするようにすると、

Ruby

1・・・・(前略) 2 def to_s 3 ["Library contents:", 4 *@books].join("\n") 5 end 6・・・・(中略) 7puts my_library

です。

投稿2020/04/22 11:01

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ohs6261

2020/04/22 12:24

ご回答ありがとうございます! 文字列化するメソッドでeachを使うと、最後に余計なものが表示されてしまうのですか?
otn

2020/04/25 10:29

いいえ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問