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

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

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

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

Q&A

解決済

1回答

559閲覧

ruby eachの実装

setsu_tenhou

総合スコア33

Ruby

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

0グッド

0クリップ

投稿2018/03/18 05:41

ruby

1class Menu 2 include Enumerable 3 4 def each 5 yield "pizza" 6 yield "spaghetti" 7 yield "salad" 8 yield "water" 9 yield "bread" 10 end 11end 12 13menu_option = Menu.new 14 15menu_option.each do |item| 16 puts "would you like : #{item}" 17end 18 19p menu_option.find{|item| item == "pizza"} 20 21p menu_option.select{|item| item.size <= 5} 22 23p menu_option.reject{|item| item.size <= 5} 24 25p menu_option.first 26 27p menu_option.take(2) 28 29p menu_option.drop(2) 30 31p menu_option.min 32 33p menu_option.max 34 35p menu_option.sort 36 37menu_option.reverse_each {|item| puts item}

eachを自作しているコードです。理解できない部分があるので、教えてください。
menu_option.eachの構文は自作したeachが呼び出されyieldは引数として渡されたブロックに置き換わり、処理されていることがわかります。しかし、なぜfindやselectにもMenuクラスで定義したeachの"pizaa"などが引数として渡されているのですか?
どれも自作したeachを通したような動きをします。

どなたかわかる方教えてください。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

findselecteachを呼び出しているからです。

https://docs.ruby-lang.org/ja/2.5.0/class/Enumerable.html

投稿2018/03/18 06:04

otn

総合スコア84555

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

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

setsu_tenhou

2018/03/18 12:00

回答どうもありがとうございました。 なるほどです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問