Rubyのmaxで最大値を求める方法【初心者向け】
初心者向けにRubyでmaxを使う方法について解説しています。これによって配列の中の最大値を求めることができます。応用も含めてコードを書きながら習得していきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Rubyのmaxを使って配列内の最大値を求める方法を解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。
今回は、Rubyに関する内容だね!
どういう内容でしょうか?
maxの使い方について詳しく説明していくね!
お願いします!
maxとは
配列の中の最大値を持つ要素を取得することができるメソッドです。
空の配列の場合はnilを返します。
また最大値だけでなく、値の大きいもの順にいくつ取得するか引数で指定することもできます。
その場合、返却値は配列となります。
`<=>`で比較可能な要素でのみ利用可能で、そうでない要素を含む配列の場合はエラーになります。
またmaxにブロックを渡した場合、ブロックの戻り値によって要素を比較します。
maxの使い方
$ irb irb(main):001:0> [5, 6, 2, 9, 8, 3].max => 9 irb(main):002:0> [5, 6, 2, 9, 8, 3].max(3) => [9, 8, 6] irb(main):003:0> [].max => nil irb(main):004:0> [].max(2) => [] irb(main):005:0> ["tech", "academy"].max => "tech" irb(main):006:0> ["tech", "academy"].max {|a, b| a.length <=> b.length} => "academy"
実際に書いてみよう
$ irb irb(main):001:0> [10, 6, 5.3, 8, 2.2].max => 10 irb(main):002:0> ['10', '6', '5.3', '8', '2.2'].max # 文字列の場合はアルファベット順で比較されます => "8" irb(main):003:0> ['10', '6', '5.3', '8', '2.2'].max {|a, b| a.to_f <=> b.to_f} # ブロックを渡して、数値として比較しています => "10" irb(main):004:0> [true, false, false, true].max # <=>演算子で比較できないものはエラーになります Traceback (most recent call last): 3: from /usr/local/bin/irb:11:in `<main>' 2: from (irb):4 1: from (irb):4:in `max' ArgumentError (comparison of FalseClass with true failed) irb(main):005:0> [{name:'taro', score:60}, {name:'jiro', score:88}].max {|a, b| a[:score] <=> b[:score]} => {:name=>"jiro", :score=>88}
以下のバージョンでサンプルコードを動かしています。
$ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
回答してくれたメンター
阿部祐也
職種: エンジニア 普段の業務: リモートワークで勤務しながら、自社・受託サービスの開発に従事 開発実績: ソーシャルゲーム、ツール系アプリ、広告システム、ヘルスケア系アプリのプロジェクトに参加しており、PHP, Ruby on Rails, Objective-C, Swiftでの開発を担当 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。