如何使用Enumerable#reject实现筛选长度不超指定值的单词数组?
问题分析与修正
你的代码存在两个关键问题:
- 块参数错误:数组中的每个元素是单个单词,并非键值对形式,不需要
words, value两个参数,仅需一个参数接收单个单词即可。 - 逻辑表达错误:
reject方法会移除块中返回true的元素,你需要明确判断单词长度大于max_length的元素,将这类元素排除后,剩下的就是长度不超过限制的目标单词数组。
修正后的代码:
def short_words(array, max_length) array.reject { |word| word.length > max_length } end
验证示例
调用 short_words(["apple", "cat", "dog", "elephant"], 3) 会返回 ["cat", "dog"],完全符合长度不超过3的要求。
内容的提问来源于stack exchange,提问作者AntonioDannemann
相关产品推荐
相关产品推荐

