A

プログラミングの学習記録

【本日の学習内容: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



sea = Sea.new(name: "オホーツク海", rank: {bronze: 0, silver: 400, gold: 600, platinum: 800 })

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}です。"

 

 
書けた!!
 
参考
 
gitのコミットメッセージ の変更など

コミットメッセージ の変更

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の一括置換

https://qiita.com/hayatokunn/items/76b41e00f114cf9a9f14