But the you can't be doing this for every new type which is being defined 
by other programmers.
So I need more general way. For every constructor of every type,
That makes it a bit problematic.
Thanks



On Sunday, January 3, 2016 at 7:59:11 PM UTC-8, Jeffrey Sarnoff wrote:
>
> Hi Julia,
>
> The simplest way to do this is to make Foo a type and define its type 
> constructor to behave as you wish.
>
> type Foo
>     n::Float64
> end
>
> function Foo(n::Float64)
>    record = createRecordForFooDB(n)
>    saveRecordInFooDB(record)
>    println("saved Foo($(n)) to DB")
> end
>
>
>
> On Sunday, January 3, 2016 at 10:49:12 PM UTC-5, Julia Tylors wrote:
>>
>> Hi, my end goal is whenever a constructor call is made, I want to detect 
>> it and keep track of it by creating an object 
>>
>> For example 
>>    f = Foo(12)
>>   I want to detect this and create a record and save it to a db.
>>
>> Thanks
>>
>> On Sunday, January 3, 2016 at 6:58:49 PM UTC-8, Isaiah wrote:
>>>
>>> There is no AST-level distinction between a "constructor call" and a 
>>> "normal function call", see [1]. Look at the code in 'reflection.jl' to see 
>>> how to determine the applicable method for a given name (which may be a 
>>> constructor). If that doesn't help, it would be helpful to clarify the goal.
>>>
>>> For return statements, use `expand(a)` to convert the expression to goto 
>>> form, which should contain only explicit returns.
>>>
>>> [1] https://github.com/JuliaLang/julia/pull/8712
>>>
>>> On Sun, Jan 3, 2016 at 6:52 PM, Julia Tylors <[email protected]> wrote:
>>>
>>>> I am planning to detect the constructor calls and return statement of a 
>>>> function 
>>>>
>>>>
>>>> a = quote begin
>>>>        x = Foo(12)
>>>>        y = 5 + 6
>>>>        f(x.val,y)
>>>>        x.val * y
>>>> end
>>>>
>>>> a is an Expr, in this expression , I would like to detect the 
>>>>  constructor calls (Foo(12)(  and distinguish them from normal function 
>>>> calls(fx.val,y).
>>>> and i also want to identify the return statement, (x.val*y). How can i 
>>>> do it programmatically?
>>>>
>>>> Thanks
>>>>
>>>>        
>>>>
>>>
>>>

Reply via email to