switch文
C言語 / C++ 2013/05/15
switch(x){
case 1:
...;
break;
case 2:
...;
break;
default:
...;
break;
}
break
を書かないとswitch
文から脱出せずに次のラベルを引き続き実行してしまう。(fall through)
enum
型も使える。
Java 2014/08/08
C言語ライクのswitch
文を使える。
switch (x) {
case 1:
...;
break;
case 2:
...;
break;
default:
...;
break;
}
break
を書かないとswitch
文から脱出せずに次のラベルを引き続き実行してしまう。(fall through)
x
には、byte
, short
, char
, int
, Byte
, Short
, Character
, Integer
,
enum
, String
が使える。
String
が使えるのは、Java7からである。
String
の場合、実行時に null
が与えられると、NullPointerException
が発生してしまい、
case null
と書けたり、 default
に飛んでくれたりはしない。
Integer
の場合も、NullPointerException
が発生しうるのは同様。
Byte
, Short
, Character
, Integer
が使えるのは、たぶん autoboxing が導入された Java5 から。
The switch
Statement | Java Language Specification
http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.11
Scala 2015/03/22
C言語ライクの構文はないが、より強力なmatch
式がある。
x match {
case 1 =>
...;
case 2 =>
...;
case _ =>
...;
}
C言語やJavaのように fall through することはない。
関数本体がmatch
式のみの場合は以下のように省略した書き方ができる。
val f: Int => Int = {
case 1 => ...;
case 2 => ...;
case _ => ...;
}
C言語のdefault
に相当するものは case _
と書けばよい。
match
式は値を返すので、いずれのケースにもマッチしない場合に
scala.MatchError
の例外が発生してしまう。
case _
があればいいのだが。
match
式の中はすべてのケースを網羅しきれていないコンパイラが判断したときには警告が発生する。
PHP 2014/05/05
C言語ライクのswitch
文を使える。
switch ($x) {
case 1:
...;
break;
case 2:
...;
break;
default:
...;
break;
}
break
を書かないとswitch
文から脱出せずに次のラベルを引き続き実行してしまう。(fall through)
break
の代わりに continue
と書いてもswitch
文から脱出できる。
case
では、型が異なっていても変換して比較される。値はC言語と違って文字列も使える。
コロンを使った以下の記法も可能。
switch ($x):
case 1:
...;
break;
case 2:
...;
break;
default:
...;
break;
endswitch;
Python 2013/12/18
Pythonにはswitch
構文はない。
Ruby 2014/06/19
case x
when 1
...
when 2
...
else
...
end
C言語やJavaのように fall through することはない。
when
節で条件にマッチするかどうかの判定は
===
演算子が使われる。
Perl 2013/09/28
use Switch;
switch($x) {
case 1 { ...; }
case 2 { ...; }
else { print "Failed"; }
}
$x
が文字列でcase
値が数字でもマッチする。その逆でもマッチする。
Switch - Perlのswitch文 | perldoc.jp
http://perldoc.jp/docs/modules/Switch-2.09/Switch.pod
sh (シェルスクリプト) 2015/03/18
case "$x" in
start)
...
;;
stop)
...
;;
*)
...
;;
esac
esac
ってcase
を逆から読んだものだけど、これをタイプするの慣れないと難しいよね。
JavaScript 2016/07/14
C言語ライクのswitch
文を使える。
switch (x) {
case 1:
...;
break;
case 2:
...;
break;
default:
...;
break;
}
break
を書かないとswitch
文から脱出せずに次のラベルを引き続き実行してしまう。(fall through)