※この記事は読者によって投稿されたユーザー投稿です:
  • 編集部の見解や意向と異なる内容の場合があります
  • 編集部は内容について正確性を保証できません
  • 画像が表示されない場合、編集部では対応できません
  • 内容の追加・修正も編集部では対応できません

ヒューマンリソシア株式会社はコラム「配列の美学(2)」を公開しました。

Arrayクラスのメソッド
Arrayクラスのメソッドはいくつもありますが、非常に便利なものが沢山あります。例えば、「injectメソッド」はその典型ではないでしょうか。例えば、1から100までの合計を計算したいとします。プログラムの条件として配列を利用することにすると、普通の言語では以下のようなプログラムになると思います。配列を初期化して、eachメソッドで配列に順次アクセスして合計を表示しています。

リスト1

1 # -*- coding:utf-8 -*-
2
3 n=1
4 numbers = Array.new()
5 while ( n <= 100 ) do
6   numbers << n
7   n += 1
8 end
9
10 sum = 0
11 numbers.each do |n|
12   sum += n
13 end
14
15 puts sum

injectメソッド
「injectメソッド」を利用すれば、リスト1の10行目から13行目は1行で済むのです。

リスト2(1行目から9行目はリスト1と同様)

10 puts numbers.inject(:+)

更に、配列の表現方法を利用すると1から100まで合計の計算は実は1行で済みます。

リスト3(1から2行目はリストと同様)

3 puts (1..100).inject(:+)

実に簡単ですね。「injectメソッド」は畳み込み処理を行います。畳込み処理とは、リスト1の10行目から13行目のような処理を言いますが、詳しくは、Rubyのリファレンス・マニュアル(http://doc.ruby-lang.org/ja/1.9.3/class/Enumerable.html)のinjectメソッドの説明を御覧ください。

この続きは以下をご覧ください
http://resocia.jp/column/343/

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

PV
アクセス解析指標の 1 つ。Web サイトの特定のページが表示された回数を示す指 ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]