質問: ### 前提・実現したいこと Ruby初学者です。 書籍「たのしいRuby第6版」を読み進めています。 引数が大きい方を戻り値として返すmaxメソッドを記述しました。 異なる記述方法としてreturnを使用する記述方法も書いてあったので同じファイル内に2つのメソッドを記述しました。 そこでふと、swiftだと同じメソッドだとエラーが出たよなと思い、max()とmax2()で記述しました。 その時はエラーも出ないで出力できましたが、同一の名前で2つともmax()で記述してみてエラーが出るかを試したところ、エラーが出ずに出力されました。 調べたところ、 上記の質問で「エラーにならないのは、ruby の言語仕様です。 」 とあります。そこまではわかりました。 この場合、どちらのメソッドが実行されて出力されたのでしょうか? 後から記述したメソッドを最新と判断しているのでしょうか? よろしくお願い致します。 ### 該当のソースコード ``` def max(a, b) if a > b a else b end end def max(a, b) if a > b return a end return b end p max(10, 5) p max(20, 5) ``` ### 補足情報(FW/ツールのバージョンなど) Ruby Ver 2.6.3p62 Visual Studio Code Ver 1.46.1
回答: 後から書いたというか、後から定義を実行した方です。