質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

2回答

3343閲覧

Ruby case if の違い

MasaF

総合スコア25

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2015/03/14 21:06

Rubyの条件分岐について。

ifとcaseの違いはなんでしょうか?

下のように書けば同じだと思うのですが(間違ってるかも。。。)
なにがちがうのでしょうか。

ーーーーー

if deg =40
puts ~
else deg =20
puts~
end

case deg
when 40
puts ~
when 20
puts~
end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ifの例は書き間違えてると思いますが(elsifelse===と書いている)、それを除けば書かれている例では動作に違いは無いです。

ある値の内容によって処理を分岐するなら、caseがわかりやすいです。それ以外の条件分岐ならif-elsifです。
case===を使う、また、カンマで区切れるrので、

lang

1case foo 2when 1 then ~~ 3when 2..9 then ~~ 4when 10,15 then ~~ 5else ~~ 6end

などがシンプルに書けます。ifだとfooを何度も書かないといけない。

投稿2015/03/15 04:09

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ifの場合は条件式は何でもかまいません。caseの場合は、case句に与えられた値をwhen句に与えられた値と比較していきます。

lang

1if 条件式1 2 処理1 3else if 条件式2 4 処理2 5else if 条件式3 6 処理3 7end

条件式1や条件式2は、何の式でもかまいません。極端な話、

lang

1if 処理1 2 処理1の成功時の処理 3else if 処理2 4 処理2の成功時の処理 5else if 処理3 6 処理3の成功時の処理 7end

のようにすることもできます。

あと、case句の値とwhen句の値の比較は===演算子を使っているのですが、ifはそのような決め事はありません。

つまり、

lang

1case x 2when 1 3 処理1 4when 2 5 処理2 6when 3 7 処理3 8end

は以下と等価です。

lang

1if 1 === x 2 処理1 3else if 2 === x 4 処理2 5else if 3 === x 6 処理3 7end

投稿2015/03/14 21:38

編集2015/03/14 21:43
chokojori

総合スコア971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasaF

2015/03/15 06:21

ifの中でも特定の場合caseが使えるってことですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問