首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wolfram Mathematica中的作业

Wolfram Mathematica中的作业
EN

Stack Overflow用户
提问于 2012-03-20 22:13:04
回答 2查看 248关注 0票数 1

关于赋值和变量的问题

代码语言:javascript
复制
(* For example *) SP = SparseArray[{},5] or SP = Range[5]

现在,我们希望在另一个函数中处理这个数组:

代码语言:javascript
复制
(* example *) Fun[array_]:= array[[3]] = 100 ; (* set cell №3 equal to 100*)

然后我们

代码语言:javascript
复制
Fun[SP]

错误!输出将是一个错误,类似于:

那么,怎样才能正确地改变函数(非纯函数)中的函数参数呢?如何创建类似于Part[]的类

可能有点像:

代码语言:javascript
复制
Clear[f]; f[a_]:=Set[Symbol[a][[3]],100]; A =SparseArray[{},5]; f["A"]; 

但这又是错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-30 11:00:52

我认为一般应该避免克里斯·德格宁的方法。

Mathematica提供了一个更好的方法:Hold属性

代码语言:javascript
复制
a = Range[5];

SetAttributes[fun, HoldFirst]

fun[array_] := array[[3]] = 100

fun[a];

a

{1,2,100,4,5}

作为一种“纯功能”:

代码语言:javascript
复制
b = Range[5];

fun2 = Function[array, array[[3]] = 100, HoldFirst];

fun2[b];

b

{1,2,100,4,5}

票数 2
EN

Stack Overflow用户

发布于 2012-03-20 23:56:42

你可以这样做:

代码语言:javascript
复制
SP = Range[5];
Fun[array_] := array[[3]] = 100;(*set cell №3 equal to 100*)
Fun[Unevaluated@SP];
SP

{1,2,100,4,5}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9795824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档