Hah, that's clever. We could easily implement required keyword arguments by 
making that the default default.


> On Nov 2, 2014, at 3:56 PM, Jameson Nash <vtjn...@gmail.com> wrote:
> 
> you could probably come up with better error messages, but the following is 
> valid syntax:
> 
> julia> f(;a=error("a is required"),b=error("b is required")) = (a,b)
> f (generic function with 1 method)
> 
> julia> f(a=1)
> ERROR: b is required
> 
> julia> f(a=1,b=4)
> (1,4)
> 
> julia> f()
> ERROR: a is required
> 
> julia> 
> 
> 
>> On Sun, Nov 2, 2014 at 3:46 PM, Kevin Owens <kevin.j.ow...@gmail.com> wrote:
>> Is there any way to do it without setting default values? Or, is there a 
>> type you can give to default values so that if you try to use them it will 
>> throw an error? I'm thinking like with R and the "NA" value.
>> 
>> Do keyword arguments have to have default values? It's not clear in the 0.3 
>> documentation on functions that it's the case.
>> 
>> 
>> 
>>> On Sunday, November 2, 2014 12:47:26 PM UTC-6, Jack Minardi wrote:
>>> You need to give default values for each keyword argument:
>>> 
>>> type Foo 
>>>     bar 
>>>     baz 
>>>     Foo(;bar=10, baz=1) = new(bar, baz)
>>> end
>>> 
>>> 
>>>> On Sunday, November 2, 2014 1:05:37 PM UTC-5, Kevin Owens wrote:
>>>> I'm using Julia 0.3 something.
>>>> 
>>>> If I make a composite type with many fields I may forget the order, but 
>>>> remember their names. I'd like to use a constructor where I can use name 
>>>> the arguments. 
>>>> 
>>>> Say I have the composite type
>>>> 
>>>> type Foo
>>>>   bar
>>>>   baz
>>>> end
>>>> 
>>>> How can I make a constructor that lets me do this
>>>> 
>>>> myfoo = Foo(baz=1, bar=2)
>>>> 
>>>> I expected this would work
>>>> 
>>>> 
>>>> type Foo
>>>>   bar
>>>>   baz
>>>> 
>>>>   Foo(;bar, baz) = new(bar, baz)
>>>> end
>>>> 
>>>> But when I run it I get 
>>>> 
>>>> ErrorException("syntax: invalid keyword argument bar")
>>>> 
>>>> I also tried
>>>> 
>>>> 
>>>> 
>>>> julia> function Foo(;bar, baz)
>>>> 
>>>>     Foo(bar, baz)
>>>> 
>>>> end
>>>> 
>>>> 
>>>> 
>>>> ErrorException("syntax: invalid keyword argument bar")
> 

Reply via email to