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. > >