【本日の学習内容:Ruby課題18~20、Git】
Ruby課題18~20に取り組みました。学んだことやイマイチ理解できていなかったことについてまとめます。
attr_accessorを使うポイント
attr_accessorは便利だが、やたらめったら書くのではなく、
セッターやゲッターが必要かどうかを見極めてコードを書いていきたい。
以下のコードでは、
Seaクラスのインスタンスはクラス外から直接呼び出されることがないので、ゲッターなどは必要ない。
class User
attr_reader :name, :power
def initialize(name:, power:)
@name = name
@power = power
end
end
class Sea
#ゲッターなどは不要
def initialize(name:, rank:)
@name = name
@rank = rank
end
def info_rank(user)
rank = case user.power
when 0..399 then
"#{user.name}さんのランクは#{@rank[:bronze]}です。"
when 400..599 then
"#{user.name}さんのランクは#{@rank[:silver]}です。"
when 600..799 then
"#{user.name}さんのランクは#{@rank[:gold]}です。"
when 800..999 then
"#{user.name}さんのランクは#{@rank[:platinum]}です。"
puts rank
end
end
users = [
User.new(name: "たこ", power: 80),
User.new(name: "サメ", power: 999),
]
users.each do |user|
sea.info_rank(user)
end
case文
以下のように記述する。
case user.power
when 条件 then
処理
when 条件 then
処理
when 条件 then
処理
when 条件 then
処理
変数に入れることもできるので、出力部分をまとめることもできる。
case user.power
when 条件 then
puts "#{user.name}さんのランクは#{@rank[:bronze]}です。"
when 条件 then
puts "#{user.name}さんのランクは#{@rank[:silver]}です。"
when 条件 then
puts "#{user.name}さんのランクは#{@rank[:gold]}です。"
when 条件 then
puts "#{user.name}さんのランクは#{@rank[:platinum]}です。"
⇩⇩⇩⇩
rank = case user.power
when 条件 then
"#{user.name}さんのランクは#{@rank[:bronze]}です。"
when 条件 then
"#{user.name}さんのランクは#{@rank[:silver]}です。"
when 条件 then
"#{user.name}さんのランクは#{@rank[:gold]}です。"
when 条件 then
"#{user.name}さんのランクは#{@rank[:platinum]}です。"
puts rank
もっと短くかけそう..
⇩⇩⇩⇩
rank = case user.power
when 条件 then
@rank[:bronze]
when 条件 then
@rank[:silver]
when 条件 then
@rank[:gold]
when 条件 then
@rank[:platinum]
puts "#{user.name}さんのランクは#{@rank}です。"
コミットメッセージ の変更
https://qiita.com/o_msyk/items/6a74623903e392ce92a3
git commitの取り消し
http://www-creators.com/archives/1116#1_git_commit
git pushしてrejectされたときの解決方法
https://qiita.com/President_Taka/items/5e563d5ea61d2829e497
VS Code
VS Codeの一括置換