2013-10-13 86 views
0

爲什麼File.each工作但File.readline不?爲什麼File.each能夠運行但File.readline不能運行?

File.open('store-sample','r') do |f| 

    f.readline("\n\n\n\n") do |l| 
    binding.pry 

    end 
end 

的代碼不破,不過下面的代碼工作:

File.open('store-sample','r').each("\n\n\n\n") do |l| 
    binding.pry 
end 

我不知道內部實現這兩種方法,但這種怪異的行爲真的讓我瘋了。

回答

3

readline不佔用塊;它返回一個值。

line = f.readline('\n\n\n\n') 
# do something with line 
+1

Ruby中的每個方法都有一個塊,區別在於它對它做了什麼。在這種情況下,readline不會產生給定的塊,所以'bind.pry'永遠不會被評估。 Ruby中的每個方法都會返回一個值。 – vgoff

+0

@vgoff感謝給我更好的瞭解紅寶石塊 – mko

0

爲什麼不使用File.foreach?它旨在一次返回一行。

相關問題