On Wed, Oct 19, 2016 at 10:33 PM, Alex Mellnik <a.r.mell...@gmail.com> wrote:
> Yichao, > > I'm afraid I'm not following -- could you expand on that a bit? Thanks, > https://github.com/JuliaLang/julia/issues/265 > > 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> 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. >> >>