Ruby 配列と式展開

配列

配列は、[1, 2, 3]["apple", "banana", "orange"]のような形式のオブジェクトです。

番号を指定して要素を取得することができます。

番号が1ではなく0から始まることに注意が必要です。

fruits = ["apple", "banana", "orange"]
puts fruits[0]  #=> apple
puts fruits[1]  #=> banana
puts fruits[2]  #=> orange

要素を取得する方法はほかにもあります。

fruits = ["apple", "banana", "orange"]
#[-n]で後ろからn番目の要素を取得
puts fruits[-1]  #=> orange
#先頭の要素を取得
puts fruits.first  #=> apple
#末尾の要素を取得
puts fruits.last  #=> orange
#存在しないものを指定するとnilが返る
p fruits[5]  #=> nil

docs.ruby-lang.org

文字列に変数を埋め込む

先ほどの配列fruitsを使って、私はbananaが好きです。と表示するプログラムを考えます。

fruits = ["apple", "banana", "orange"]
puts "私はfruits[1]が好きです。"
#=> 私はfruits[1]が好きです。
puts "私は" + fruits[1] + "が好きです。"
#=> 私はbananaが好きです。

全体をダブルクォーテーション"で囲むと、fruits[1]自体も文字列として認識されてしまいます。足し算を使うことで、意図する表示ができました。

式展開

今回はすべて文字列なのでこれでも問題ありませんが、式展開という書き方を知っておくと便利です。

式展開の書き方:#{変数名など}

fruits = ["apple", "banana", "orange"]
puts "私は#{fruits[1]}が好きです。"
#=> 私はbananaが好きです。

式展開を使えば、数値と文字列の連結も可能です。

age = 30
puts "私は" + age + "歳です。"
#=> エラー!(文字列と数値の足し算は不可)
puts "私は#{age}歳です。"
#=> 私は30歳です。

変数だけでなく計算を埋め込むこともできます。ダブルクォーテーションではなくシングルクォーテーションで囲むと、式展開せずすべてが文字列になります。

n = 2
m = 3
puts "#{n}×#{m}の答えは#{n * m}です。"
#=> 2×3の答えは6です。
puts '#{n}×#{m}の答えは#{n * m}です。'
#=> #{n}×#{m}の答えは#{n * m}です。

docs.ruby-lang.org