2017-07-27 51 views
1

我有一個方法需要兩個參數。 (max_length)的整數和(文本)的字符串。如果文本中每個單詞的字符數量大於等於max_length,我們將從該數組中刪除該單詞。最後,我們計算數組中剩餘的單詞。調用方法'count'返回錯誤的參數個數

我的方法效果很好,直到text.count在那裏我遇到'wrong number of arguments, given 0 expected 1+'

know這是因爲我們還沒有傳遞的任何參數text.count但我不想通過任何作爲我只想計算剩餘數組中剩餘的單詞數量。

但是,如果我執行的

x = ["This", "Will", "Work"] 
x.count => 3 

一個簡單的例子,爲什麼我不能用我的塊內計數的這個例子嗎?

我在做什麼錯了?

def timed_reading(max_length, text) 
    text.split.delete_if do |y| 
     y.length >= max_length 
     text.count 
    end 
    end 
+0

「我在做什麼錯了?」 - 你的計數在'delete_if'塊中,它應該在外面。 –

+0

該方法的名稱並不引起我特別的描述。 –

回答

2

我覺得這是你試圖做

def timed_reading(max_length, text) 
    text.split.delete_if { |y| y.length >= max_length }.count 
end 

你可以只用長度算的話小於最大反正

text.split.count { |y| y.length < max_length } 
0

您對字符串進行調用counttext而不是陣列上。您需要重新排列您的代碼,以便您打電話給您的delete_if呼叫的結果。類似這樣的:

def timed_reading(max_length, text) 
    short_words = text.split.delete_if do |y| 
    y.length >= max_length 
    end 
    short_words.count 
end 
1

如果您返回的只是計數,則無需刪除單詞。你可以簡單地使用count和一個塊:

def timed_reading(max_length, text) 
    text.split.count{|w| w.length < max_length} 
end 
相關問題