Ruby on Railsで要素を配列、ループを使って取り出しましょう!
配列ってよく聞くけど何でしょうか。どうやって使うの?こんな疑問を抱えたままになっていないでしょうか。
配列から要素を取り出すのはプログラムでよく使うので疑問を持ったままでは、コードを何回もかかなければなりません。
この記事を読むことで、配列とループ処理が理解できプログラミングが楽になりアプリ開発において困らなくなります。
もくじ
配列とは
そもそも配列とはなんでしょうか。
配列とは、データをたくさん詰められる箱のようなものです。そしてそのデータの1つ1つが要素と言。変数は1つの箱ですが、配列は複数の箱といったイメージでしょうか。
例えば、
arrays = [“a”,”b”,”c”]
という配列においては、配列名は arrays で要素は a b c になります。
また、この要素ひとつ1つには順番に番号がついており0から始まることに注意してください。
a → 0
b → 1
c → 2
arrays = [“a”,”b”,”c”]
puts arrays[0]
とすれば、結果は
a
となります。
Ruby 配列をループで取り出す
配列に入っている要素を一つずつとりだすと要素の数だけコードをかかなければなりません。
arrays = [“a”,”b”,”c”]
puts arrays[0]
puts arrays[1]
puts arrays[2]
end
3回ならいいですが、例えば100回繰り返しとなるとどうでしょう。
到底書いてはいられませんね。こんなとき繰り返して要素を取り出すことができれば大変便利です。
そんな時に使うのがeach文です。
each文
文は配列の中から一つずつ要素を取り出します。
公式
配列.each do |変数名|
処理
end
例
arrays = ["a","b","c"]
arrays.each do |array|
puts array
end
出力
abc
each文の他にもよくつかうものを紹介します。
while文
条件式が真である限り、処理を繰り返します。
公式:
while 条件式 do
繰り返し処理
end
例
i = 0
while i<7
puts i
i += 1
end
出力
0
1
2
3
4
5
6
For文
eachの構文版のような形で、データに格納されているものを一つずつ取り出し、
処理を行います。
公式:
for 個別データ in 格納データ
繰り返し処理
end
例
lists = [a,b,c,d]
for list in lists
puts "list"
end
出力
a
b
c
d
times文
繰り返し処理の回数を規定したい時に使います。
公式:
回数.times do
繰り返し処理
end
例
5.times do
puts "アイウエオ"
end
出力
アイウエオアイウエオアイウエオアイウエオアイウエオ
それでは、Ruby on Railsでループ処理を行ってみましょう。
Ruby on Railsでの配列から要素を取り出す
Ruby での確認ができましたので、Ruby on Railsで配列をループした取り出してみます。ブログアプリで記事を配列にしてすべての記事を取り出す時に使われます。
まずは、Ruby on RailsではMVCと言われるアーキテクチャーについて確認しておきましょう。
Ruby on railesのMVCとモデルの役割を知ろう!
Ruby on railsのMVCとコントローラーの役割って何?
簡単な、アプリを作り、controllerに配列を作り、viewで表示します。
loopといアプリを作って確認してみます。
>rails new loop
Loopにディレクトリーを移動してbandle install をします。
>bandle install
Controllerをつくります。
Indexアクションを持ったloop controllerを作ります。
>rails g controller loop index
routesはできているので確認しましょう。
Rails.application.routes.draw do
get 'loop/index'
end
controllerのindexアクションの中に配列を作成します。
ここはrubyと同じですが、変数は@を付けることを忘れないようにしましょう。
要素は、a,b,cとします。
class LoopController < ApplicationController
def index
@arrays = ["a","b","c"]
end
end
そうすることで配列@arrayをview のindex.html.erbへ渡します。
index.html.erbでabc配列の中をループしてa,b,cを取り出してみましょう。each文を使うのはrubyと同じです。
<% @arrays.each do|array| %>
<%= array %>
<% end %>
では実行してみましょう。
Localhost:3000をたたくとa b cと表示されました。
まとめ
- 配列とは
- Ruby 配列をループで取り出す
- Ruby on Railsでの配列から要素を取り出す
配列で複数の要素を扱かうことができます。ループで簡単に取り出すことができ、たくさんのコードを書く必要がなくなります。