谁能够讲明白mathematica中module,block,with的区别
答案:2 悬赏:20
解决时间 2021-03-05 11:36
- 提问者网友:醉人眸
- 2021-03-05 02:52
谁能够讲明白mathematica中module,block,with的区别
最佳答案
- 二级知识专家网友:为你轻狂半世殇
- 2021-03-05 03:24
With利用替换的方法定义局部常量,比如With[{x=2}, x=1]是非法的,相当于执行2=1。With的定义可以穿透Hold,其他两个都不行
Module用来定义局部变量,和其他语言里面的局部变量概念类似。不知道选哪个好就选Module就行
Block不定义新变量,而是被定义的符号在Block体内的值做暂时的改变。Block常用于重载内置函数和参数,其他情况下一般不用。
例子
x = "global"; f[] := x
Module[{x = "local"}, {x, f[], Hold[x]}]
Block[{x = "local"}, {x, f[], Hold[x]}]
With[{x = "local"}, {x, f[], Hold[x]}]输出
{"local", "global", Hold[x$123]} (* Module *)
{"local", "local", Hold[x]} (* Block *)
{"local", "global", Hold["local"]} (* With *)
Module用来定义局部变量,和其他语言里面的局部变量概念类似。不知道选哪个好就选Module就行
Block不定义新变量,而是被定义的符号在Block体内的值做暂时的改变。Block常用于重载内置函数和参数,其他情况下一般不用。
例子
x = "global"; f[] := x
Module[{x = "local"}, {x, f[], Hold[x]}]
Block[{x = "local"}, {x, f[], Hold[x]}]
With[{x = "local"}, {x, f[], Hold[x]}]输出
{"local", "global", Hold[x$123]} (* Module *)
{"local", "local", Hold[x]} (* Block *)
{"local", "global", Hold["local"]} (* With *)
全部回答
- 1楼网友:零负荷的放任
- 2021-03-05 04:41
我不会~~~但还是要微笑~~~:)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯