if・ifs: Notion Formula 解説 (13)

はじめに

Notion Formula の第13回目では条件判断を行う if と ifs を解説します。Formula 1.0 の時代は ifs がなかったために、?: を推奨していましたが、今は ifs があるのでわざわざ ?: にこだわる必要はなくなったと思います。すでに逆引き Formula のページに関数説明があるので、このページを見ながら解説していきます。

?:, if if, ?: ifs

文法

if は条件に従って A または B を選択する関数です。Formula 1.0 の時代は次の二つの書き方のみがありました。

if(条件, A, B)
条件 ? A : B

Formula 1.0 の時代は ifs がなかったので、3分岐以上の場合には、これらを組み合わせることしかできませんでした。

if(条件1, A, if(条件2, B, C))
条件1 ? A : 条件2 ? B : C

前者の場合、条件が増えると() の数が最後に何個閉じ括弧を書けばいいのかわからなくなることが多かったです。このため、Formula 1.0 の時代は if ではなく、? : を使うべきと推奨していました。

if(条件1, A, if(条件2, B, if(条件3, C, if(条件4, D, E))))
条件1 ? A : 条件2 ? B : 条件3 ? C : 条件4 ? D : E

このような場合に、Formula 2.0 では ifs という便利な関数が追加されました。上記の条件は以下のように書けます。しかも好きな位置で改行できるようになったため、非常に見やすく書くことができます。

ifs(
  条件1, A,
  条件2, B,
  条件3, C,
  条件4, D,
  E
)

基本的には Formula 2.0 の場合には、メソッド形式を勧めています。しかし、if のメソッド形式を書くくらいであれば、?: の方が見やすいと思います。条件の形によっては条件の部分に () が必要になるためです。また、ifs の場合もメソッドの場合には対称性がなくなるので見た目も悪いです。やはり if, ifs については関数形式が相応しいと思います。

(条件1).if(A, B)
(条件1).ifs(
  A,
  条件2, B,
  条件3, C,
  条件4, D,
  E
)

if

「if」は条件がtrueの場合は最初の値を返します。そうでない場合は2番目の値を返します。

if

ifs

「ifs」は最初のtrue条件に対応する値を返します。これは、複数のネストされたif()ステートメントの代わりとして使用できます。

ifs

おわりに

この後、様々な関数の説明で条件判断を使うので、最初に制御構造の一つである if と ifs を紹介しました。