質問: ``` 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円です" ``` 上記のコードはメソッドで、条件分岐を組み合わせ、複数のreturnを用いたものです このコードの内では、endが二回使われていますが Rubyの通常の条件式は ** if 条件式 処理(trueの場合) else 処理(falseの場合) end ** という処理で行いますよね? しかしこのコードでは **def メソッド名(引数) if 条件式 処理(trueの場合) end 処理(falseの場合) end ** という構造になっています。 通常の条件式だったら、 **def メソッド名(引数) if 条件式 処理(trueの場合) else 処理(falseの場合) end end ** となると思ったのですが、なぜこのコードはこのような構造になるのですか?
回答: インデントがおかしいだけです。 ``` def price_with_shipping(price) if price >= 5000 return price end return price + 500 end ``` こうすれば、1つ目の`end`は`if`を、2つ目は`def`を閉じるものだとわかりやすいかと思います。 なお、`if`の中に1行しか書かない場合、`return price if price >= 5000`とすれば、`end`なしで書けます。