It's a lot like unpacking a type, except instead of defining new variables 
for the unpacked values, your macro places the type instance designation 
(t. ...).

On Sunday, October 9, 2016 at 10:55:45 AM UTC-7, Tom Breloff wrote:
>
> What about it?  I don't think there's anything like this in Parameters.
>
> On Sun, Oct 9, 2016 at 1:27 PM, Chris Rackauckas <rack...@gmail.com 
> <javascript:>> wrote:
>
>> What about Parameters.jl <https://github.com/mauro3/Parameters.jl>?
>>
>>
>> On Wednesday, September 7, 2016 at 7:23:47 AM UTC-7, Tom Breloff wrote:
>>>
>>> Hey all... I just threw together a quick macro to save some typing when 
>>> working with the fields of an object.  Disclaimer: this should not be used 
>>> in library code, or in anything that will stick around longer than a REPL 
>>> session.  Hopefully it's self explanatory with this example.  Is there a 
>>> good home for this?  Does anyone want to use it?
>>>
>>> julia> type T; a; b; end; t = T(0,0)
>>> T(0,0)
>>>
>>> julia> macroexpand(:(
>>>        @with t::T begin
>>>            a = 1
>>>            b = 2
>>>            c = a + b - 4
>>>            d = c - b
>>>            a = d / c
>>>        end
>>>        ))
>>> quote  # REPL[3], line 3:
>>>     t.a = 1 # REPL[3], line 4:
>>>     t.b = 2 # REPL[3], line 5:
>>>     c = (t.a + t.b) - 4 # REPL[3], line 6:
>>>     d = c - t.b # REPL[3], line 7:
>>>     t.a = d / c
>>> end
>>>
>>> julia> @with t::T begin
>>>            a = 1
>>>            b = 2
>>>            c = a + b - 4
>>>            d = c - b
>>>            a = d / c
>>>        end
>>> 3.0
>>>
>>> julia> t
>>> T(3.0,2)
>>>
>>>
>

Reply via email to