Thank you Mike, your solution works.
However, I don't understand why the $ interpolation is required. I see the 
variable *a* does not require interpolation, why does *i* require it?

On Wednesday, 21 October 2015 15:30:42 UTC+8, Michael Hatherly wrote:
>
> The try block is hiding an error, ERROR: UndefVarError: i not defined. 
> You need to interpolate the i variable in the quoted expression using $i:
>
> for i=1:4
>     try
>         if i==3 error() end
>         eval(:(push!(a,$i)))
>     catch e
>     end
> end
>
> — Mike
> ​
> On Wednesday, 21 October 2015 09:11:44 UTC+2, 2n wrote:
>>
>> I'm trying to eval an expression in a try block and it doesn't seem to 
>> work.
>> a=[]
>> for i=1:4
>>     try
>>         if i==3 error() end
>>         eval(:(push!(a,i)))
>>         catch e
>>     end
>> end
>>
>> a
>>
>> After running the above code a evaluates to: 
>>
>> 0-element Array{Any,1}
>>
>> I'm expecting and want the same result as the code below which evaluates to: 
>> 3-element Array{Any,1}:
>>  1
>>  2
>>  4
>>
>> a=[]
>> for i=1:4
>> try
>>  if i==3 error() end
>>  push!(a,i)
>>  catch e
>>  end
>> end
>>
>> a
>>
>> Is there a way to get expression evalution to work in this case?
>>
>>

Reply via email to