Erik and Cedric, thanks for the suggestions! I think I will look into the
Val{Bool} option. Right now I'm just using a normal Bool flag in the
function, but it's not as clean as I'd like.
Thanks!
Chris
On Monday, January 18, 2016 at 6:27:10 PM UTC-5, Erik Schnetter wrote:
>
> Chris
>
> In this case, you could write an auxiliary third function that takes
> an additional Bool parameter. Both your functions call the third
> function with this Bool parameter.
>
> An alternative solution is to make this a Val{Bool} parameter, which
> would likely specialize the functions at build time. This might
> improve performance if the functions are called in a
> performance-critial region.
>
> -erik
>
>
> On Mon, Jan 18, 2016 at 4:36 PM, Cedric St-Jean <[email protected]
> <javascript:>> wrote:
> > my_func(fcn1::Function, passedIn::Float64) =
> > my_func(fcn1, (y, z, passedin)->default_fcn(0.0, y, z, passedin),
> > passedIn)
> >
> > You could achieve the same effect in one definition if you put fcn2 as a
> > keyword argument. Also check out FastAnonymous.jl if performance
> matters.
> >
> >
> > On Monday, January 18, 2016 at 4:25:20 PM UTC-5, Christopher Alexander
> > wrote:
> >>
> >> Thanks for the response! As a follow-up, what would I do in a
> situation
> >> where the passed-in second function (fcn2) and the default function
> take a
> >> different number of arguments?
> >>
> >> Thanks!
> >>
> >> Chris
> >>
> >> On Monday, January 18, 2016 at 4:06:41 PM UTC-5, Erik Schnetter wrote:
> >>>
> >>> Define the second function like this:
> >>> ```
> >>> my_func(fcn1::Function, passedIn::Float64) = my_func(fcn1,
> >>> default_fcn, passedIn)
> >>> ```
> >>>
> >>> -erik
> >>>
> >>>
> >>> On Mon, Jan 18, 2016 at 4:02 PM, Christopher Alexander
> >>> <[email protected]> wrote:
> >>> > Hello all, I had a question concerning a best practice in a
> particular
> >>> > case
> >>> > of multiple dispatch which is as follows.
> >>> >
> >>> > Let's say I have a function with two different methods.
> >>> >
> >>> > function my_func(fcn1::Function,fcn2::Function, passedIn::Float64)
> >>> > x = 0.0
> >>> > y = 1.0
> >>> > z = 2.0
> >>> > val1 = fcn(x, y, passedIn)
> >>> > val2 = fcn2(y, z, passedIn)
> >>> > return val1, val2
> >>> > end
> >>> >
> >>> > function my_func(fcn1::Function, passedIn::Float64)
> >>> > x = 0.0
> >>> > y = 1.0
> >>> > z = 2.0
> >>> > val1 = fcn(x, y, passedIn)
> >>> > val2 = default_fcn(x, y, z, passedIn)
> >>> > return val1, val2
> >>> > end
> >>> >
> >>> > My question is basically, what would be the best way to do this
> without
> >>> > massive code duplication? The actual situation I am working with
> has
> >>> > much
> >>> > more going on in the function, so it's not like I could create some
> >>> > init
> >>> > function to set up x, y, & z. But literally the only different
> >>> > behavior
> >>> > between the two methods is whether or not a second function is
> passed
> >>> > in.
> >>> >
> >>> > Thanks!
> >>> >
> >>> > Chris
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Erik Schnetter <[email protected]>
> >>> http://www.perimeterinstitute.ca/personal/eschnetter/
>
>
>
> --
> Erik Schnetter <[email protected] <javascript:>>
> http://www.perimeterinstitute.ca/personal/eschnetter/
>