【发布时间】:2021-07-31 07:40:42
【问题描述】:
我正在尝试遍历字符串数组并删除第一个字母不是元音的字符串。我知道有更简洁的方法可以实现这一点,例如#select,但我不明白为什么以下不起作用。有人可以解释一下这段代码有什么问题吗:
def delete_unless_1st_letter_is_vowel(array)
array.each do |element|
first_letter = element[0]
if !first_letter.match?(/[aeiou]/)
array.delete(element)
end
end
end
array = %w(knit taleb know high london alpha)
返回;
taleb
high
alpha
我觉得它应该删除除alpha 之外的所有数组元素。我误会了什么?
【问题讨论】:
-
旁白:我建议将
if !first_letter.match?(/[aeiou]/); array.delete(element); end替换为array.delete(element) unless first_letter.match?(/[aeiou]/)或array.delete(element) if first_letter.match?(/[aeiou]/).nil?。