Yichao,

I'm afraid I'm not following -- could you expand on that a bit?  Thanks,

Alex

On Wednesday, October 19, 2016 at 4:41:30 PM UTC-7, Yichao Yu wrote:
>
> On Oct 19, 2016 7:26 PM, "Alex Mellnik" <a.r.m...@gmail.com <javascript:>> 
> wrote:
> >
> > Here's my bizarre find of the day.  Most functions can be overwritten 
> without problems:
> >
> > function add7(i)
> >     7 + i
> > end
> > Out[1]:
> > add7 (generic function with 1 method)
> > In [2]:
> >
> > add7(0)
> > add7(0)
> > Out[2]:
> > 7
> > In [3]:
> >
> > function add7(i)
> >     9 + i
> > end
> > function add7(i)
> >     9 + i
> > end
> > Out[3]:
> > add7 (generic function with 1 method)
> > WARNING: Method definition add7(Any) in module Main at In[1]:2 
> overwritten at In[3]:2.
> > In [4]:
> >
> > add7(0)
> > Out[4]:
> > 9
> >
> > However, others can not:
> >
> > using DataFrames
> > df = DataFrame(A=[1,2,3], B=["A", "B", "C"])
> > println(df)
> > 3×2 DataFrames.DataFrame
> > │ Row │ A │ B   │
> > ├─────┼───┼─────┤
> > │ 1   │ 1 │ "A" │
> > │ 2   │ 2 │ "B" │
> > │ 3   │ 3 │ "C" │
> > In [3]:
> >
> > row[:A] > 2
> > function filter(row)
> >     if row[:A] > 2
> >         return 1
> >     else
> >         return 3
> >     end
> > end  
> > Out[3]:
> > filter (generic function with 1 method)
> > In [4]:
> >
> > [filter(row) for row in eachrow(df)]
> > [filter(row) for row in eachrow(df)]
> > Out[4]:
> > 3-element Array{Int64,1}:
> >  3
> >  3
> >  1
> > In [5]:
> >
> > rand() > 0.5
> > function filter(row)
> >     if row[:A] > 2
> >         return 2
> >     else
> >         return 4
> >     end
> > end  
> > WARNING: Method definition filter(Any) in module Main at In[3]:2 
> overwritten at In[5]:2
> > Out[5]:
> > filter (generic function with 1 method)
> > .
> > In [6]:
> >
> > [filter(row) for row in eachrow(df)]
> > Out[6]:
> > 3-element Array{Int64,1}:
> >  3
> >  3
> >  1
> >
> > What is it about this second example that prevents the newer method from 
> being used?
>
> Nothing about it but how you use it. It's inlined to the comprehension.
>
>

Reply via email to