Toi*_*son 15
本@应被视为这表明语言的一般规则可能不适用于警告标志.例如,函数调用
f(x)
Run Code Online (Sandbox Code Playgroud)
永远不会修改x调用上下文中变量的值,而是修改宏调用
@mymacro x
Run Code Online (Sandbox Code Playgroud)
(或者@mymacro f(x)就此而言)非常好.
另一个原因是Julia中的宏不是基于C中的文本替换,而是基于抽象语法树中的替换(这更强大并且避免了文本替换宏因此而出乎意料的后果).
宏在Julia中具有特殊语法,并且由于它们在解析时间之后被扩展,因此解析器还需要一种明确的方式来识别它们(不知道在当前范围中定义了哪些宏).
ASCII字符是大多数编程语言设计中的宝贵资源,Julia非常包含.我猜这个选择@主要归结为这样一个事实,它不需要更重要的东西,并且它非常出色.