はじめに
Notion Formula の第2回目では関数の呼び出し方の違いを確認します。一つは関数的な呼び出し方、もう一つはメソッド的な呼び出し方です。ここでは、現在時刻からその日の 0:00 の時刻を計算するフォーミュラを例に解説します。parseDate でも似たことが簡単にできるのですが、それだと日付だけの情報になってしまうため、この手法はまだ有効な場合があります。
関数形式
func1(arg1_1, arg1_2)
のように使います。func1
の関数の結果を func2
の関数に引き渡す場合、func2(func1(arg1_1, arg1_2), arg2_1, arg2_2)
のようになります。入れ子の形になってしまうため、関数の内側から読んでいく必要があります。上の例では以下のようになりました。
コードブロックにすると以下のようになります。最初に時間を引き算した後で、分を引き算しているのですが、インデントを付けても少しわかりにくい気がします。
dateSubtract( dateSubtract( now(), hour(now()), "hours" ), minute(now()), "minutes" )
メソッド形式
arg1_1.func1(arg1_2)
のように使います。最初の引数をオブジェクトとみなし、それに対して引数を渡してメソッドを実行するという形式です。func1
のメソッドの結果を func2
のメソッドに引き渡す場合、func1
の結果がオブジェクトに相当するため、メソッドチェーンという形で記述できます。具体的には、arg1_1.func1(arg1_2).func2(arg2_1, arg2_2)
のようになります。基本的に前から順番に読んでいけばいいので読みやすいです上の例では以下のようになりました。
コードブロックにすると以下のようになります。現在時刻に対して、時間を引き算し、その後分を引き算している様子が非常にわかりやすいです。
now() .dateSubtract(now().hour(), "hours") .dateSubtract(now().minute(), "minutes")
おわりに
以前の Formula で使われてきた関数形式と、Notion Formula 2.0 から記述できるようになったメソッド形式の両方を解説しました。基本的にはメソッド形式で書いた方が読みやすくなるのでおすすめです。