Re: Passing function arguments as lists of replacement rules
- To: mathgroup at smc.vnet.net
- Subject: [mg104690] Re: Passing function arguments as lists of replacement rules
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Sat, 7 Nov 2009 06:46:25 -0500 (EST)
- References: <hd0t9j$82h$1@smc.vnet.net>
dnquark schrieb: > I wish to (a) avoid having to pass a dozen parameters to a function > and have to deal with remembering which goes where and (b) retain the > flexibility in terms of adding new parameters. It seems that a good > solution would be to pass my parameters as a structure with named > fields (this is how I do it in another system). In Mathematica, I came up > with something like this: > > foo[paramList_] := Module[{a,b,c}, > {a,b,c} = {"a","b","c"}/.paramList; > {a,b,c} > ] > sample usage: e.g. foo[{"a"->1,"b"->2}] > > My question to the group: is this a good solution? Are there better > ways to achieve my goals?.. It is a good and very common solution. Look at Options and you will find out that there are even more comfortable ways to achieve what you want and more, e.g. default values: Options[foo]:={"a"->1,"b"->2,"c"->3} foo[opts:OptionsPattern[]]:=Module[{a,b,c}, {a,b}={"a","b"}/.opts; c = OptionValue["c"]; {a,b,c} ] foo["a"->3,"c"->7] hth, albert