KLWPにおける計算と条件文(if文)の使い方【KLWP勉強中】
- 本記事は広告およびアフィリエイトプログラムによる収益を得ています。
KLWPではテキストなどの値入力時に四則計算やif文を使うことができます。わかっていれば簡単なことですが、どうするんだったかな?と思うこともあるので書き残しておきます。
計算の記述方法
計算式は$と$で囲めば、その中で算術演算子を使って計算させることができます。
15+3
ではそのまま「15+3」と表示されますが、
$15+3$
ならその計算結果「18」が表示されます。
以下の算術演算子が使えます。
+ | 足す |
---|---|
– | 引く |
* | 乗算 |
/ | 除算 |
^ | 累乗 |
% | 割り算の「余り」 |
時間の計算
これを使って時差のある場所の時刻を表示しようとして
$(df(HH)-8$:df(mm)$時
のようにやろうとしてもうまく行きません。計算はされますが、時間の計算ではないので-3時だとか28時だとか、そういった表示になってしまいます。
x時間前、x分前のような表示をしたいときは
$(df(HH:mm, a10h)$
$(df(HH:mm, r30m)$
のような表示をします。
a10hで10時間後、r30mで30分前になります。aが後、rが前で、数字の後のアルファベットはd=日、h=時、m=分、s=秒になります。
if文の使い方
KLWPでは条件式、if文も簡単に書けます。基本的には「$if(A=B, C, Z)$」の形式で記述し、A=BならばC、そうでなかったらZという表示になります。簡単ですね。
左図の例はバッテリー残量が100%のときはFULLを、そうでなければパーセンテージを表示するようになっています。
$if(bi(level)=100, "FULL", bi(level)+"%")$
複雑なif文
「A=BだったらC、そうでなかったらZ」という単純なものだけでなく「A=BだったらC、そうでなかったときA=DだったらF、それでもなかったときにG=HだったらI、どれでもなかったらZ」といった複数の条件を重ねることもできます。
左図の例は$df(f)$で表示した曜日の数字で条件を作ってそれぞれ英語の曜日表示に変換しています。KLWPを日本語で使用していると$df(EEEE)$が「火曜日」など日本語になってしまうので、それを英語で表示したいときはこのif文を使うと英語なり自分の好きな言葉で表示できます。
また、if文の条件は=だけでなく、「a~=”b”」(aがbを含む)、「c!=d」(cがdではない)、「e<f」(eがf未満)、「g<=h」(gがh以下)といったものも使えます。
複数の条件を組み合わせる
条件式は「|(または)」「&(かつ)」で繋ぐことで組み合わせて使うことができます。
$if(3=3 | z=a, OK, NG)$
これは「3=3」または「z=a」ならばOK、そうでなければNGを表示なので「OK」と表示されます。
$if(3=3 & z=a, OK, NG)$
これは「3=3」かつ「z=a」ならばOK、そうでなければNGを表示なので「NG」と表示されます。
さらにこの条件は括弧を付けることで重ねることもできます。
$if(3>2 | 2>1 & 1=0, OK, NG)$
これは「3>2」または「2>1」かつ「1=0」すべて正ならばOK、そうでなければNGを表示なので「NG」となります。これは文の最初から判定していくのでまず「『3>2』または『2>1』」を判定し、そのあとで「かつ『1=0』」を判定します。「『3>2』または『2>1』」は正ですが、「かつ『1=0』」が負となるので「NG」と表示されます。
$if(3>2 | (2>1 & 1=0), OK, NG)$
このように条件文に括弧をつけると、数字の計算式と同様にそちらを先に判定します。まず「『2>1』かつ『1=0』」を判定しこれは負です。そのあとに「または『3>2』」が判定され、こちらが正となり「または」でつながっているので最終的に正となり「OK」と表示されます。
条件が満たされなかった時
「$if(A=B, C, Z)$」と記述すれば、A=BならばC、そうでなかったらZという表示になります。この最後のZの部分を記述しないと、条件どれにも当てはまらなかった時に何も表示されません。
前$if(bi(level)=50, 中)$後
上のようにとすると、バッテリー残量が50なら「前中後」ですがそれ以外の時は「前後」と表示されます。スペースも付きません。ただ前後に改行を入れるとそれは反映されてしまうので気をつけてください。
まとめ
表示の仕方は簡単ですが、条件式が複雑になってくるとややこしいですね。この辺りを理解しておくと、KLWPでの複雑な表現もできるようになってくると思います。
本記事に記載された内容は記事公開時点のものであり、必ずしも最新の情報とは限りません。記事をご覧いただく際には、最新の情報を確認するようお願いいたします。
OREFOLDER編集長。
1979年静岡県清水市生まれ、現静岡市清水区在住。
様々な巡り合わせから、このサイト1本で生活してる氷河期世代の一人。ガジェットに限らず広く浅く様々なものに興味があります。
スマートフォンは2010年にXperia SO-01Bを買ったのが最初。同時にb-mobile U300で格安SIMも始めました。これまでに数百台のスマホを手にし、格安SIMも常時20種類以上契約しています。