はじめに
1月〜プログラミングスクールで学習しています。
これから平日は~3/25まで毎日何かしらアウトプットのため投稿を続ける予定です。
今回は if,elseを使って簡単なポイント付与サービスを実装します。
※Ruby2.6.5の環境を使用し学習しています。
問題
トレーディングカードショップで商品を購入するとポイントが付与されます。
以下条件によってポイント付与率が変わります。
- 購入金額が9999円以下の場合、1%のポイント
- 購入金額が10000円以上の場合、2%のポイント
このように付与されるポイントを出力するメソッドを作ります。
また、購入者が誕生日の場合はポイントが5倍になります。
誕生日の場合はtrue, 誕生日でない場合はfalseで表します。
また、小数点以下をすべてのポイント計算が終わったあとに.floorメソッドを使って切り捨てます。
calculate_points(500, false) → 5ポイント付与されました。
実装例
まずは購入金額が9999円以下の場合、1%のポイント、購入金額が10000円以上の場合、2%のポイントが付与されるように下記記述しました。
amount = 購入金額 is_birthday = 誕生日か、それ以外か(ture,falseで表します)
def calculate_points(amount, is_birthday)
if amount <= 9999
point = amount * 0.01
else
point = amount * 0.02
end
次に誕生日か否かの条件分岐を作ります。
.floorメソッドについて(Ruby 3.1ですが)
Ruby 3.1 リファレンスマニュアルinstance method Float#floor
if is_birthday
point = point * 5
end
puts "#{point.floor}ポイント付与されました。"
end
上記2つを合わせたのがこちらになります。
def calculate_points(amount, is_birthday)
if amount <= 9999
point = amount * 0.01
else
point = amount * 0.02
end
if is_birthday
point = point * 5
end
puts "#{point.floor}ポイント付与されました。"
end
今回ポイントとなったのはポイントには小数点が必要ないことです(ポイントだけに)
そこで.floorメソッドを使うことでうまく表現することができました〜
ではまた