subst() - 替代() 2.0很酷的新功能
可以幫助很多用戶!
☑ 刪除一些感覺像是「bug」的東西
☑ 很高興擁有
無人需要它
是什麼激發了這個願望清單請求?
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 腳本編寫者都會很高興您實現了它!
其他願望
自動化和腳本編寫回覆:subst() - 替代() 2.0在大多數情況下,使用者將至少提供一個參數作為名稱 - JMP 會尋找名稱並使用名稱表達式而不是名稱本身。
因此,JMP 應該將參數評估到可以編寫的層級(查找,獲取名稱表達式(如果可用),不要進一步評估):
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
回覆:subst() - 替代() 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))
擷取表達式
回覆:subst() - Replace() 2.0 - 狀態變更為:已確認感謝您的建議@hogi 。