You could also just use Evaluate(). It is to be avoided, but sometimes it is
necessary. I do agree though that being able to pass unnamed arguments to
cfinvoke would be a nice option.

I'm still a bit fuzzy though on why you would be calling a method whose
arguments you would "never know" the names of. While I suppose this is
possible in theory, in practice I would think this would be pretty rare. In
your example of calling a custom setter method for example, why not just
have a convention that the argument is named the same as the property? i.e.
setFirstName() would define an argument named "firstName". In that case,
calling it is as easy as:

<cfinvoke method="set#arguments.name#">
       <cfinvokeargument name="#arguments.name#" value="#arguments.value#"
/>
</cfinvoke>

I do this all the time when doing automatic population of beans, for
example.

On 10/22/07, Baz <[EMAIL PROTECTED]> wrote:
>
> @Brian, there is a reason and method to the madness!
>
> @Matt, that solution won't work for this particular case because I know
> functionOne() will certainly define 1 named argument, but what that
> argument name is I won't know. So to adjust the test case:
>
> How can I rewrite this code:
>
> <cfinvoke method="functionOne" argument1="123"
> returnvariable="ReturnValue" />
>
> So that ReturnValue equals 123 regardless of whether functionOne is
> written like this:
>
> <cffunction name="functionOne">
>        <cfargument name="SomeRandomNameThatICanNeverKnow" />
>        <cfreturn arguments.SomeRandomNameThatICanNeverKnow />
> </cffunction>
>
> or like this:
>
> <cffunction name="functionOne">
>         <cfargument name="XYZ" />
>        <cfreturn arguments.XYZ /> </cffunction>
>
> Another way of phrasing the question would be:
>
> Is there a way to pass unnamed arguments using cfinvoke?
>
> For the record, Dan Wilson (http://nodans.com) helped me come up with a
> solution without using cfinvoke, but by dynamically invoking a function
> using script:
>
> // dynamic function name
> FunctionName='FunctionOne';
>
> // save the function object itself to a variable
> FunctionObject=variables[ FunctionName ];
>
> // invoke it
> FunctionObject('123');
>
> You will notice that if I invoke the function using the preceding syntax,
> I get the same result regardless of how functionOne() is defined (of the two
> options I specified earlier).
>
> Cheers,
> Baz
>
>
>
> On 10/22/07, Brian Kotek <[EMAIL PROTECTED]> wrote:
> >
> > I'd argue that the better solution would be just to add a cfargument tag
> > to the target method(s).
> >
> > On 10/22/07, Baz < [EMAIL PROTECTED]> wrote:
> > >
> > > Hi gang,
> > >
> > > I was wondering if it were possible to pass an un-named argument to a
> > > dynamic function. For example, I have this call:
> > >
> > >    - <cfinvoke method="get#arguments.Name#"
> > >    returnvariable="ReturnValue" value="#arguments.Value#" /> - It
> > >    is a CFINVOKE because to my knowledge, in CF8, you still can't invoke a
> > >    dynamic function using script, i.e.
> > >    set#DynamicFunction#(arguments)
> > >
> > > The attribute "value" in the cfinvoke call basically passes the
> > > invoked function an argument named "Value". Is it possible to pass in an
> > > un-named argument in position 1 instead? Basically the equivalent of
> > > set#DynamicFunction#(Value)??
> > >
> > > Cheers,
> > > Baz
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CFCDev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cfcdev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to