三項演算子 2014/10/14
C言語などでは a ? b : c
と書けば、「もしa
ならb
、そうでなければc
」という意味になる。
単項演算子はパラメータが1つの演算子、二項演算子はパラメータが3つの演算子で、三項演算子はパラメータが3つの演算子のことだが、たいていの言語には三項演算子があったとしても ? :
しかないので、三項演算子といえば ? :
のことを指すことが多い。
C言語, C++ 2013/09/17
例
count == 1 ? "foot" : "feet"
右結合であるので以下のような書き方が可能。
count == 0 ? "zero" : count == 1 ? "one" : "many"
Go言語 (golang) 2015/07/07
C言語に似ているGo言語には意外にも三項演算子がない。
Java 2013/09/17
C言語ライクの三項演算子を使える。
count == 1 ? "foot" : "feet"
C言語と同じく右結合。
Scala 2013/10/28
三項演算子がなく、代わりにif式を使う。 Scalaではifは文ではなく、値を返す式なので、三項演算子と同じ使い方ができる。
if(count == 1) "foot" else "feet";
PHP 2014/04/14
C言語ライクの三項演算子を使える。
count == 1 ? "foot" : "feet"
PHP 5.3以降では、2項目を省略してエルビス演算子として使うこともできる。
他の言語と違いPHPでは左結合なので、三項演算子を入れ子にして使うのはやめたほうがよさそう。
PHPの三項演算子が左結合なのは、PHP言語仕様のバグだ
http://d.hatena.ne.jp/RepsolFireBlade/20130220/1361332690
Python 2014/07/31
C言語ライクではないが、条件演算子if
を使って以下のように書ける。
"foot" if count == 1 else "feet"
条件演算子 | Python 2.7 documentation
http://docs.python.jp/2/reference/expressions.html#conditional-expressions
条件演算子 | Python 3 documentation
http://docs.python.jp/3/reference/expressions.html#conditional-expressions
Ruby 2014/10/14
C言語ライクの三項演算子を使える。Rubyでは条件演算子ともいう。
count == 1 ? "foot" : "feet"
Scalaと同じくRubyのifは値を返すので、三項演算子では複雑でわかりにくくなってしまう場合は、 ifを使ったほうがいいかも。
if count == 1 then "foot" else "feet" end
条件演算子 | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2foperator.html#cond
Perl 2013/07/31
C言語ライクの三項演算子を使える。
$count == 1 ? 'foot' : 'feet'
JavaScript 2013/09/30
C言語ライクの三項演算子を使える。
count == 1 ? 'foot' : 'feet'
C言語と同じく右結合。