三項演算子を使う

投稿者: | 2017年4月5日

Swiftの勉強をしながらC#にも手を出しています。どちらも似てるので、何となく理解が進む。そこで出てきたのがその他演算子(Miscillaneous Operators)の条件式(Conditional Expression)。非常に単純なif~else文を置き換えることができるものです。

?と:とで条件分岐

datecountで作ったCalendarDateクラスの中に適当なコードがあったので、これを置き換えてみます。

if〜else文を使ったもの

if silence {
  format.dateFormat = "yyyyMMdd"
} else {
  format.dateFormat = "EEE MMM d yyyy"
}

三項演算子で書き換えたもの

format.dateFormat = silence ? "yyyyMMdd" : "EEE MMM d yyyy"

このふたつは等価です。?演算子の前にある条件(ここではBool値を持つsilence)の内容に従って、trueなら:の前、falseなら:の後の値をformat.dateFormatに代入しています。振る舞いとしては上のif~else文の内容と全く同じですね。

どちらもコンパイル結果は同じ

バイト単位で比較したわけではないですが、コンパイル後のバイナリサイズは同じでした。

どちらがわかりやすいかは置いておけば、三項演算子を使ったコードのほうがソースはシンプルですね。慣れれば読みやすいのかな?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です