Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- = 在 Wolfram 语言里的涵义和很多别的编程语言里不太一样的。 你这样做等于在重新设置 Symbol 的运算规则,比如
- In[26]:= Symbol["foobar"] = 2
- During evaluation of In[26]:= Set::write: Tag Symbol in Symbol[foobar] is Protected.
- Out[26]= 2
- 也会给一样的报错。因为 Symbol 是系统符号,其运算规则被系统保护了,不能随意重新定义。另如重新定义 Sin 的运算规则也会报错:
- In[28]:= Sin[Pi] = 2
- During evaluation of In[28]:= Set::write: Tag Sin in Sin[\[Pi]] is Protected.
- Out[28]= 2
- 这样解释如果你无法理解,可以暂时跳过。 这个概念也许你可以深入看看 down values(https://reference.wolfram.com/language/ref/DownValues.html.zh)
- 如果你真的需要这样定义一堆 f?? 的符号,也许可以这样:先把不要的那些 f?? 符号清除掉:
- In[23]:= Names["Global`*"]
- Out[23]= {"dir", "f11", "f12", "f13", "f21", "f22", "f23", "f31", \
- "f32", "f33", "i", "j", "s"}
- In[24]:= Remove /@ %[[2 ;; 10]]
- Out[24]= {Null, Null, Null, Null, Null, Null, Null, Null, Null}
- In[25]:= Names["Global`*"]
- Out[25]= {"dir", "i", "j", "s"}
- 有可能用 Quit 重启 Mathematica 运算核也可以,看你同一个 session 里有否别的需要保持的结果。然后用 With 先执行 Symbol 产生 f?? 这些符号,然后定义它们的值:
- In[19]:= Table[With[{s = Symbol["f" <> ToString[i] <> ToString[j]]}, s = i*j];, {i, 3}, {j, 3}]
- Out[19]= {{Null, Null, Null}, {Null, Null, Null}, {Null, Null, Null}}
- In[20]:= f11
- Out[20]= 1
- 知乎的计算机程序排版功能实在太差,浪费了我很多时间,居然还无法保存回复,而且还不允许我修改原来的回答。这类编程问题最好到更成熟和专门的论坛问 (https://mathematica.stackexchange.com/, https://community.wolfram.com/),得到好回答的机会更大、速度更快。
Advertisement
Advertisement