抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

我曾经写过一篇关于Mathematica中下标与赋值问题的文章,不过那篇文章重点解决的是符号关联的问题。但有时,我们可能会遇到另一种问题,比如

如题,已经有部分Wolfram演示项目支持在线运行,尽管这个功能貌似还在测试中。

All problems in computer science can be solved by another level of indirection. [1]

最近在拿Mathematica做一些小东西的时候发现CurrentValue等函数在动态中刷新不受Refresh等方式影响。比如

使用

1
GeneralUtilities`PrintDefinitions[symbol]

即可,如下图

众所周知,Mathematica中虽然使用下标形式非常方便,但如果对下标结构进行直接赋值,它将关联到内部符号Subscript上。这样,在我们大量清理符号定义的时候可能会漏掉一些定义。类似地,导数Derivative有同样的问题,比如对于

Mathematica在处理字符时默认总会将所有字符转换为ASCII字符表示,例如π会转化为\[Pi],而像汉字这样的一般字符会转化为\:4eea

这种设计固然可以避免某些环境对非ASCII字符不支持的困难,而且在Mathematica环境下会自动转换成原本的字符,但对于一般的文本阅读环境而言,尤其是在代码中使用一些中文文本或者注释时,这样的内容阅读起来根本无法理解。

为了方便在没有Mathematica的环境下也能方便的阅读程序包中的非ASCII的一般字符,下面脚本提供了将\:nnnn形式的转义序列转换为UTF-8编码下对应的Unicode字符的简单方法

Wolfram语言中的作用域结构主要有如下5种:

  • Module
  • Block
  • With
  • DynamicModule
  • 命名空间

“一切皆表达式”

Everything is an expression.

是的,理解了上面这句话,就基本理解了Wolfram语言。至于其它的,那都是细枝末节。

这是一篇灌水文。

GitHub的Fork功能实际上主要是服务于Pull Request,然而我以前并没有正确地认识到这一点,简单地把Fork当clone使,导致有些时候不太方便。比如生成这个博客的仓库,以前是直接Forkleopardpan的博客得到的。现在我想解除这种Fork关系,但同时保留提交的历史。然而在网上却没有找到有关的教程,没办法,只能自己试试。

根据个人经验和见闻总结而来。主要涉及C和C++语法和语义方面的一些陷阱。