Rus*_*lan 0 wolfram-mathematica conditional-compilation
我正在尝试创建一个条件表达式来初始化一些函数,变量等.在C中看起来像这样的东西:
#if option==1
int foo(int x){/*some code here*/}
int q=10;
#else
char foo(int x){/*some other code*/}
double q=3.141592;
#endif
use_q(q);
f(some_var);
Run Code Online (Sandbox Code Playgroud)
在Mathematica中,我尝试过使用If,像这样:
If[option==1,
foo[x_]=some_expression1;
q=10;
,
foo[x_]=some_expression2;
q=3.141592;
]
use_q[q];
f[some_var];
Run Code Online (Sandbox Code Playgroud)
但结果是函数的参数被涂成红色,并且在If中没有任何内容被初始化或计算.那么,我该怎样做才能获得有条件的"编译"?
几件事:
千万不能使用空格(下划线)在变量名-在数学这些被保留的符号,代表的模式.
如果你条件不计算为True或False,If没有任何评价.
从而:
In[12]:= If[option==1,Print["1"],Print["Not 1"]]
Out[12]= If[option==1,Print[1],Print[Not 1]]
Run Code Online (Sandbox Code Playgroud)
因此你的结果.在这种特殊情况下,红色的colred参数不是问题.您应该使用===代替==,或者TrueQ[option==1],以获得您想要的东西.有关更多信息,请查看此处.
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |