2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rubyの勉強まとめ

Posted at

はじめに

Rubyの勉強を始めましたので、勉強した内容をまとめていきたいと思います。
勉強時のRubyのバージョンはruby2.5.0です。

式展開

文字列の中に式を挿入し、変数などの値を簡単に表現することができます。
文字列内に#{式}の形で記述します。
ただし、「"(ダブルクォーテーション)」で括った場合のみ、展開され、「'(シングルクォーテーション)」の場合は#もそのまま表示されてしまいます。
以下のように表示されます。

str = "hoge"
puts "str = #{str}" #=> str = hoge
puts 'str = #{str}' #=> str = #{str}

また、式展開では、変数だけでなく配列や直接式を記述できます。

arr = [1, 2, 3]
puts "array = #{arr}" #=> array = [1, 2, 3]
puts "result = #{1 + 1}" #=> result = 2
puts "result = #{1 == 1}" #=> result = true

配列(Array)

配列は[]で記述することができます。

array = [] #=> []
array = [1, 2, 3] #=> [1, 2, 3]

配列に追加する場合は、push<<を使用します。

array.push(4) #=> [1, 2, 3, 4]
array << 5 #=> [1, 2, 3, 4, 5]

初期化には%wを使用して省略して記述できます。
%w[]の中にスペースで区切って文字列を記述すると、その区切った要素で初期化されます。

%w[aaa bbb ccc] #=> ["aaa", "bbb", "ccc"]

また、%wで初期化した場合は、各要素をシングルクォーテーションで区切った扱いとなります。
%Wのようにwを大文字で記述すると各要素をダブルクォーテーションで区切った扱いとなります。そのため、式展開を使用できます。

str = "hoge"
%w[#{str}1 #{str}2] #=> ["\#{str}1", "\#{str}2"]
%W[#{str}1 #{str}2] #=> ["hoge1", "hoge2"]

ハッシュ(Hash)

keyとvalueの組み合わせで表現できます。
初期化は{}で記述します。
以下のように、{key: value}の形式で記述した場合は、keyはシンボルの形式になります。そのため、文字列で取得することはできません。

hash = { id: 1, name: "hoge" } #=> {:id=>1, :name=>"hoge"}
hash[:id] #=> 1
hash[:name] #=> "hoge"
hash["id"] #=> nil

文字列等をkeyとする場合は、以下のように{key => value}で記述します。

hash2 = { 'id' => 2, 'name' => "hoge2" }
hash["id"] #=> 2
hash["name"] #=> "hoge2"
hash[:id] #=> nil

また、keysvaluesでkeyとvalueを取得できます。

hash.keys #=> [:id, :name]
hash.values #=> [1, "hoge"]

範囲(Range)

一定の範囲を表すオブジェクトです。
開始値..終了値で記述します。
また、開始値...終了値のように、.を3つ記述した場合は終了値を含みません。
数値だけでなく、文字列なども記述することができます。

(1..3).to_a #=> [1, 2, 3]
(1...3).to_a #=> [1, 2]
("a".."e").to_a #=> ["a", "b", "c", "d", "e"]
# to_aはオブジェクトを配列(Array)に変換するメソッド

条件分岐

条件分岐は、if〜endで記述します。
2つ目以降の条件はelsifで記述します。(else ifではないです)

str = "bbb"
if str == "aaa"
  puts "hoge1"
elsif str == "bbb"
  puts "hoge2"
else
  puts "hoge3"
end
# => "hoge2"

他に、ifの逆で、条件を満たさない場合に実行するunlessがあります。

str = "bbb"
unless str == "aaa"
  puts "hoge1"
else
  puts "hoge2"
end
# => "hoge1"

また、条件が1つのみの場合、以下のように後置ifでも記述できます。

str = "aaa"
puts "hoge" if str == "aaa" #=> "hoge" 
puts "hoge" if str == "bbb" #=> 実行されない

ループ

ループはeachで記述できます。
以下の例のstrには配列の各要素が入ります。

%w[a b c].each do |str|
  puts str
end
# 実行結果
a
b
c

配列だけでなく、ハッシュやRangeでも使用できます。ハッシュの場合は、keyとvalueの2つの変数を受け取ります。

{id: 1, name: "hoge"}.each do |k, v|
  puts "#{k}, #{v}"
end  
# 実行結果
id, 1
name, hoge
(1..3).each do |i|
  puts i
end  
# 実行結果
1
2
3

一定回数繰り返す場合は、timesで記述できます。

3.times do
  puts "hoge"
end
# 実行結果
hoge
hoge
hoge

case

case 変数 when 値 endの形式で記述できます。
変数が複数の値のどれに一致するか判定する時に使用できます。
複数の条件に合致する場合は、最初に合致したwhenに入ります。

str = "bbb"
case str
  when "aaa"
    puts "hoge1"
  when "bbb"
    puts "hoge2"
  else
    puts "hoge3"
end
# => hoge2

また、whenの条件にはRangeで範囲を指定したり、カンマ区切りで複数条件を指定することができます。

num = 2
case num
  when 1..3
    puts "hoge1"
  when 4..6
    puts "hoge2"
  else
    puts "hoge3"
end
# => hoge1
str = "bbb"
case str
  when "aaa", "ccc"
    puts "hoge1"
  when "bbb", "ddd", "eee"
    puts "hoge2"
  else
    puts "hoge3"
end
# => hoge2
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?