There is an issue for keyword constructors:
https://github.com/JuliaLang/julia/issues/5333
and a related pull request:
https://github.com/JuliaLang/julia/pull/6122

Anyway, it should be possible to make a macro for that but I'm not aware
of an available one.  Alternatively you can use a Dict.  Also, breaking
up the parameters in sub-parameter types might make it a bit more
managable, i.e. 4x5 parameters instead of 20 parameters in one type.

Related is packing and unpacking of parameters:
https://groups.google.com/forum/#!searchin/julia-users/macro$20parameter/julia-users/IQS2mT1ITwU/vrE9FCaQH6EJ

On Sat, 2015-01-17 at 01:34, Andrew <owen...@gmail.com> wrote:
> Suppose I have a model which contains many parameters. I'd like to store my 
> parameters in a type, for example
>
> type Parameters
>  sigma::Real
>  xi::Real
>  eta::Real
>  beta::Real
>  rho::Real
>  agrid::FloatRange
> end
>
>
> and then I need to assign some values to my parameters. The natural way I 
> see to do this is
>
> params = Parameters(1,2,3,4,5,linrange(1,10,10))
>
>
>
> or something like that. However, the fact that I need to remember the order 
> in which I defined these parameters means there is some chance of error. In 
> reality I have about 20 parameters, so defining them this way would be 
> quite annoying.
>
> It would be nice if there was a constructor that would let me use keyword 
> arguments, as in
>
> params = Parameters(sigma=1,xi=2,eta=3,beta=4,rho=5,agrid=linrange(1,10,10)) 
> .
>
>
>
> I know I could write my own constructor and use keyword arguments, but then 
> I think I'd still need to use the ordered constructor to write that one.
>
> Is there an easy way to do this? Maybe a macro that could automatically 
> define a constructor with keyword arguments?(I don't know much about 
> metaprogramming). Alternatively, is there is a cleaner way to store 
> parameters that doesn't use types?
>
> ---
> I did find a related post 
> here. 
> https://groups.google.com/forum/#!searchin/julia-users/constructor$20keyword$20arguments/julia-users/xslxrihfO30/jV2awP5tbpEJ
>  
> . Someone suggests that you can define a constructor like,
> Foo(;bar=1, baz=2) = new(bar, baz)
>
> which does what I want. Is there a way to macro that so that it's 
> automatically defined for every field in the type?

Reply via email to