How to call by reference for particular argument(s)?
- To: mathgroup at smc.vnet.net
- Subject: [mg22093] How to call by reference for particular argument(s)?
- From: d8442803 at student.nsysu.edu.tw (Wen-Feng Hsiao)
- Date: Mon, 14 Feb 2000 02:03:46 -0500 (EST)
- Organization: NSYSU
- Sender: owner-wri-mathgroup at wolfram.com
Dear all, I cannot figure out how to call by reference for particular arguments. Say, I want to design a function, which will return the position list where the second list locates in the first list. For example, If one inputs the following code: In[1]:= res={}; myPosition[{a, b, c, d, e}, {b, d}, res]; res It outputs {2, 4}. Since the b and d in the second list are in the positions 2 and 4 of first list. My code is listed below. SetAttributes[myPosition, HoldAll]; myPosition[v1_, {e1_, e2___}, res_Symbol] := Module[{tmp}, tmp = Flatten[Position[v1, e1]]; If[Length[tmp] != 0, AppendTo[res, tmp[[1]]]]; If[nil[{e2}] =!= nothing, (* if e2 not null *) myPosition[v1, {e2}, res]]]; The difficulties are when I change it to the followings, it cannot work: In[10]:= res={}; u1={a, b, c, d, e}; u2={b, d}; myPosition[u1, u2, res]; res the myPosition[u1, u2, res] cannot be resolved. How can I do? Change the signature to myPosition[v1_Symbol, {e1_Symbol, e2___Symbol}, res_Symbol] does not work either. It's obvious that the intended call by reference is only for the third argument "ref", so please show me the rope, thanks! Furthermore, is there any function exists for the same purpose as myPosition? Wen-Feng
- Follow-Ups:
- Re: How to call by reference for particular argument(s)?
- From: Hartmut Wolf <hwolf@debis.com>
- Re: How to call by reference for particular argument(s)?