##はじめに
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)
##おわりに
次回はクラスとインスタンスについてまとめようと思う。