Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Call-by-reference from inside a function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg72572] Re: Call-by-reference from inside a function
  • From: dh <dh at metrohm.ch>
  • Date: Wed, 10 Jan 2007 02:34:55 -0500 (EST)
  • References: <eo012n$kp1$1@smc.vnet.net>


Hi zac,

here is an example:

v1=1;

SetAttributes[fun,HoldAll];

fun[x_Symbol]:=Module[{},x=2];

fun[v1];

v1

see e.g.: http://forums.wolfram.com/student-support/topics/12522



zac wrote:

> Dear Group,

> 

> I'm in need of a function, which is called with one argument, a list.

> The function is to chose one element of the list randomly, AND modify

> the original list by removing the chosen element from it. My problem is

> that I cannot modify the global variable from inside the function. It

> is not a solution to return with a list such as:

> Return[{chosen_element, modified_local_list}], and than make an

> assignment outside the function.

> I'm thinking on some call-by-reference method, but as I've learned so

> far, there is no user-friendly way to do this, just some workarounds

> (which I don't know). Any suggestions?

> 

> Istvan

> 

> example code below:

> 

> RandomChoseElem[list_List] := Module[

>       {pos, elem},

>       pos = Random[Integer, {1, Length[list]}];

>       elem = list[[pos]];

>       (* This is to be solved inside : *)

>       (* global`list = Drop[global`list, {pos}]; *)

>       Return[elem]

>       ];

> 

> set = {1, 2, 3, 4};

> 

> RandomChoseElem[set]

> 



  • Prev by Date: RE: Call-by-reference from inside a function
  • Next by Date: Re: ContainsQ ?
  • Previous by thread: RE: Call-by-reference from inside a function
  • Next by thread: Re: Call-by-reference from inside a function