我有一个带两个参数的方法。 (max_length)的整数和(text)的字符串。如果文本中每个单词的字符数是> = max_length,我们会从数组中删除该单词。最后我们计算数组中剩余的单词。
我的方法很有效,直到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 :(得分: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 }
答案 1 :(得分:1)
如果您返回的只是计数,则无需删除单词。您只需将count
与块一起使用:
def timed_reading(max_length, text)
text.split.count{|w| w.length < max_length}
end
答案 2 :(得分:0)
您在字符串count
上调用text
而不在数组上调用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
电话时调用。像这样:
let currentstoryboard = UIStoryboard()