CalcNoteHelp icon indicating copy to clipboard operation
CalcNoteHelp copied to clipboard

要望:比較演算子と三項演算子の追加

Open muramasa000 opened this issue 4 months ago • 1 comments

要望です。 比較演算子と三項演算子を実装して下さい。

プログラム電卓のように使えるので、大変重宝しています。 ですが、条件によって値や式が変わる場合(例えば何個かの品目を入力した結果の小計が、10000円以下では手数料は100円固定、以上では1%)に、今だと両方の判断を想定してそれぞれの式を書く必要があるかと思います。

ここで比較演算子と三項演算子が有ると表記がシンプルにできるので、是非とも実装して欲しいです。

例えば y = (x <= 10000) ? 100 : x / 100 などとできればシンプルでいいと思います。

ご一考よろしくお願いします。

※但しこれを実装すると論理演算子も欲しくなる気がします…

muramasa000 avatar Oct 24 '25 02:10 muramasa000

サポートする文法にプログラミン言語的な要素を追加する要望はたまにいただくことがありますが、 これには計算エンジンを全て一から作り直す必要があり、難しい状況です。 CalcNoteではユーザー定義関数をサポートしており、Javascriptで独自の関数を作成することができます。 これを利用すれば三項演算子と似たような機能を実装することができます。 例えば以下の4つの関数を実装します。 関数の引数は数値しかサポートしていないので演算子を文字列で渡すことはできません。 作成した関数はキーパッドのカスタマイズでお好きなボタンに割り当てられます。

// <= : 以下(less than or equal)
function ifle(val, limit, yes, no) {
    return val <= limit ? yes : no;
}

// < : 未満(less than)
function iflt(val, limit, yes, no) {
    return val < limit ? yes : no;
}

// > : より大きい(greater than)
function ifgt(val, limit, yes, no) {
    return val > limit ? yes : no;
}

// >= : 以上(greater than or equal)
function ifge(val, limit, yes, no) {
    return val >= limit ? yes : no;
}

これを使って、 y = (x <= 10000) ? 100 : x / 100 の例であれば以下のような感じで呼び出せます。

x = 11000
ifle(x, 10000, 100, x/100)

ただ関数だと三項演算子より可読性は落ちるので微妙ではあります。 ユーザー定義関数の作成方法はチュートリアル動画が参考になります。 https://www.youtube.com/watch?v=FbMDtiJbsE0

burton999dev avatar Oct 24 '25 03:10 burton999dev