LoginSignup
0
0

More than 1 year has passed since last update.

Ruby基礎まとめ① (変数、条件分岐、繰り返し、ハッシュ、メソッド)

Last updated at Posted at 2021-06-13

はじめに

Progateで学習したRubyの内容を自分なりにまとめておく。

Hello World

基本的にputsを用いて処理結果を表示していく

puts "Hello Ruby"

文字列と数値

数字を取り扱う場合は以下のような違いがある

puts 3 + 5  # 8
puts "3 + 5"  # 3 + 5

# 文字列の連結
puts "私は" + "Diggy-MO'です." # 私はDiggy-MO'です.

変数

変数の宣言

変数の宣言、変更などのルールは大体他言語と同じ

text = "Piscineはつら楽しい" # 変数の宣言
puts "42tokyoの" + text

length = 8
width = 9
puts length * width
puts "--------------"

length += 5 # 変数の変更
puts length * width

変数を文字列に含める場合

"文字列 #{変数名} 文字列"
""(ダブルクォーテーション)で囲む必要あり
''(シングルクォーテーション)だと、#{変数名}という文字列として扱われてしまう
数値と文字列の単純な連結 puts age + "歳です" はできない

length = 9
width = 8
area = length * width
puts "面積は#{area}です"

単語の命名規則

snake_case: 単語の間をアンダーバーでつなぐ命名規則

配列

# 変数名 = [値1, 値2, 値3, ...]
languages = ["日本語", "英語", "スペイン語"]

puts languages[1]
puts "#{languages[0]}を話せます"

条件分岐

if, else

# 書式
if 条件1
  条件1が成立する(true)時の処理
elsif 条件2
  条件2が成立する時の処理
else
  どの条件も成立しない時の処理
end
  • A以上(>= A)
  • Aではない(!= A)
  • AかつB(A && B)

などの条件の書き方も他言語と同様

number = 48

if number % 3 == 0 && number % 5 == 0
  puts "FizzBuzz"
elsif number % 5 == 0
  puts "Buzz"
elsif number % 3 == 0
  puts "Fizz"
else
  puts number
end

繰り返し処理

each

# 書式
配列.each do |変数名|
  処理
end

変数のスコープ

繰り返し処理(each)の中で使った変数は、eachの中でしか使えない。

languages = ["日本語", "英語", "スペイン語"]
border = "---------------------" # 変数のスコープ

languages.each do |language| # languageはeachの中でしか使えない
  puts border
  puts "#{language}を話せます"
end
# puts language <- エラー

ハッシュ

それぞれの値にキーを設定して管理する。

# 書式
{"キー1" => 1, "キー2" => 2, ...}

通常のハッシュ

キーの値の変更や追加などもできる

exam = {"subject" => "Math", "score" => 80}

puts exam["subject"] # キーの値を出力
exam["subject"] = "Science" # キーの値を変更
puts exam["subject"]

exam["grade"] = "good" # 新しいキーと値の追加
puts exam["grade"]

シンボル

文字を""''の代わりに先頭に:をつけた書き方

# {:キー1 => 値1, :キー2 => 値2, ...}
# {キー1: 値1, キー2: 値2, ...} (省略形)
# 変数名[:キー] で呼び出し(省略形でも呼び出し方は同じ)

exam = {:subject => "Math", :score => 80}
exam = {subject: "Math", score: 80} # この2つ同じ

puts "#{exam[:subject]}: #{exam[:score]}点"

nil

nil は何かが存在しないことを表すために用いられるオブジェクト

nilに関しては、コメントで紹介して頂いた以下の記事から引用させて頂いた。

exam = {subject: "Math"}

if exam[:score] 
  puts "#{exam[:subject]}の結果は#{exam[:score]}点です"
else # 存在しないキーを指定すると、nil(false)となる
  puts "#{exam[:subject]}の結果は分かりません"
end

要素がハッシュである配列

# 変数名 = [
#   {キー1: 値1, キー2: 値2},
#   {キー1: 値1, キー2: 値2},
# ]

characters = [
  {name: "にんじゃわんこ", age: 14},
  {name: "ひつじ仙人"},
  {name: "ベイビーわんこ", age: 5},
  {name: "とりずきん"}
]

characters.each do |character|
  puts "--------------------"
  puts "名前は#{character[:name]}です"
  if character[:age]
    puts "年齢は#{character[:age]}歳です"
  else
    puts "年齢は秘密です"
  end
end

メソッド

# 書式
ド名(引数)
  処理
  return 戻り値
end
メソッド名(引数)  # メソッドの呼び出し

通常のメソッド

def price_with_shipping(price)
  if price >= 5000
      return price
  end
    return price + 500
end

puts "商品の合計金額は3000円です"
puts "お支払い金額は、送料込みで#{price_with_shipping(3000)}円です"
puts "-----------"
puts "商品の合計金額は10000円です"
puts "お支払い金額は、送料込みで#{price_with_shipping(10000)}円です"

キーワード引数

# def メソッド名(引数1:, 引数2:, 引数3:, ...)
#   処理
#   return 戻り値
# end
# メソッド名(引数1: 値1, 引数2: 値2, 引数3: 値3, ...)

def buy(item:, price:, count:)
    puts "#{item}#{count}台のお買い上げです"
    puts "合計金額は#{price * count}円です"
end

buy(item:"テレビ", price:15000, count:2)

おわりに

次回はクラスとインスタンスについてまとめようと思う。

0
0
2

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
0
0