subst() - 置換() 2.0☐ クールな新機能
☐ 多くのユーザーに役立つ可能性があります!
☑ 「バグ」のように感じられるものを削除します
☑ あれば便利
☐ 誰もそれを必要としない
このウィッシュリストのリクエストのきっかけは何ですか?
Substitute は式処理のための非常に強力な関数です。
JSL を使用した効率的で堅牢なアプリケーションの開発 (EU 2018 415)
Substituteの大きな欠点は、引数を評価することです。(
したがって、 Substitute()を使用した式は非常に長くなり、読みにくくなります。その上、新しい JSL スクリプト作成者は正しい構文を学習する必要があります。これらすべての Expr() が必要であるとは誰も思っていません。
例:
Substitute( Expr( a + Sqrt( a ) ), Expr( a ), Expr( b ) )
どのような改善を望みますか?
引数を評価しない新しい関数subst() 。次のように記述できます:
Substitute( a + Sqrt( a ), a, b )
このアイデアはなぜ重要なのでしょうか?
Subst()とEval(Subst()) は何百万回も使用され、そのたびに JSL スクリプト作成者はこれを実装してくれたことに満足するでしょう。
その他の希望
自動化とスクリプトRe: subst() - substitute() 2.0ほとんどの場合、ユーザーは少なくとも 1 つの引数を名前として指定します。JMP は名前を検索し、名前自体の代わりにName Exprを使用します。
したがって、JMP は、次のように記述できるレベル (検索し、 Name Expr が使用可能な場合はそれを取得し、それ以上評価しない) まで引数を評価する必要があります。
a=Expr(myExpr);
Subst(x+y, x, a) // result: myExpr + y
</CODE>instead of </P><PRE><CODE class=" language-jsl">a=Expr(myExpr);
Substitute(Expr(x+y), Expr(x), Name Expr(a)) // result: myExpr + y
.
また、JMP が引数をそのまま( Name Exprを解決せずに)使用することを確認したい場合は、次のように記述します。
a=Expr(myExpr);
Subst(x+y, x, Expr(a)) // result: a + y
Re: subst() - substitute() 2.0言い換えると:
置換()
... Extract Expr()の魔法/簡単さを備えたSubstitute()
clear symbols();
// direct mode, no Expr necessary
Extract Expr(x + y, x);// -> x
Extract Expr(x^2 + y, c);// no c in x^2 + y -> empty
// Name Expr mode
c=Expr(x^2);
Extract Expr(x^2 + y , c);// looks up c = x^2, find "x^2"" in x^2 +y
残念ながら、うまくいかないこと(思ったほど簡単ではない):
c=Expr(x^2);
Extract Expr(c * d, Expr(c))
抽出式
Re: subst() - substitute() 2.0 - ステータスが「確認済み」に変更されました@hogiさん、ご提案ありがとうございます。