2015-04-08 50 views
0

雖然經歷了ruby monk,但我已經看到Float實例方法的計數爲201,但是當我在我的irb中嘗試時,它顯示的只是114.如果有人讓我明白爲什麼計數的數量發生變化在實例方法中以及這個實例方法依賴於什麼因素。爲什麼實例方法的數量存在差異?

puts Float.instance_methods.count 
+0

確定這是不是在使用的紅寶石版本的差異? –

+0

嗯..可能不是。我在紅寶石1.9和紅寶石2.2中獲得了112。不知道201可能來自哪裏。 –

+0

我正在使用ruby 2.2.0,1.9.3,並且發現兩個版本都有區別,但是從這個201來的地方呢? – cyborg

回答

2

有一個在紅寶石Float類的實例方法總數沒有差異(的版本相同)。這個數字可能因Ruby版本而異,但沒有兩個相同的Ruby版本會有不同的實例方法。

我見過的漂浮實例方法計數爲201

你們看到的是擴展Float類的實例方法的總數。該擴展是由Rails完成的。

例如,在Rubymonk終端中,Float類的實例方法列表在其列表中顯示duplicable?,這顯然不是Float類的實例方法。它通過擴展核心Object類在ActiveSupport中實現,並在Rails 3.2.13之後棄用。

+1

您的意思是該數字高於期望的數字,因爲Rails(或其某些部分)已被加載。這是一個令人信服的解釋,但我不會說「沒有差異」。畢竟,這門課程被稱爲「Ruby Primer」,這是一門純Ruby課程。有理由期望在Float中顯示的實例方法的數量僅適用於Ruby,並且該數字從最近的版本到下一個版本變化不大。電子人,我建議你把這個建議傳給一個課程作者。 –

+0

@CarySwoveland,不同的Ruby版本可能在實例方法之間有一點區別,但不會像100.我已經在Rubymonk控制檯中檢查了Float類的實例方法,它們顯示了Object類(通過ActiveSupport Core擴展)的所有實例方法以及實例Float類的方法(用Ruby Core定義)。 –

+0

是的,如果您在RubyMonk控制檯中'將ActiveSupport.to_s'放入,它確實被定義了。傻 - 它可能不應該在那裏。 –

相關問題