假设我使用大符号“>”调用函数一个论点:
findb[x^2 - 10, ">", 0]
不是在函数体内测试第二个参数是什么(通常的设计),我希望它直接替换它出现的每个表达式:
findb[exp_Plus, ptest_String, value_?NumberQ] :=
Module[{},
x /. Flatten[{FindInstance[(exp ToExpression[ptest] value) &&
x != 0 , x, Reals]}]]
由于这不适用于内置ToExpression
,实现此结果的方法是什么?
答案 0 :(得分:3)
正如@agentp所暗示的,答案是肯定的:
findb[exp_Plus, ptest_String, value_?NumberQ] := Module[{},
x /.Flatten[{FindInstance[(ToExpression[
StringJoin[ToString[exp, InputForm], ptest,
ToString[value]]]) && x != 0 , x, Reals]}]]
然而,我觉得非常冗长。可以改进吗?
答案 1 :(得分:0)
替代方法,假设您支持允许运算符的离散列表:
Switch[ ptest ,
">" , exp > value ,
"<" , exp < value , ... ]
不优雅,但它可能是最安全最强大的方法。