如果我使用多个if / elsif语句但是希望保持代码整洁,我能够使这段代码工作。请告诉我这段代码有什么问题。我期待看到一个带有[“e”]的数组,但返回[]
def pull_vowels(str)
letters=str.split(//)
vowels=[]
0.upto(letters.count-1) {|idx|
vowels<<letters[idx] if letters[idx]==("a"||"e"||"i"||"o"||"u")
}
vowels
end
pull_vowels("test")
答案 0 :(得分:0)
我猜这是红宝石。
口译员不够聪明,不能在if letters[idx]==("a"||"e"||"i"||"o"||"u")
中理解你的意图。
它实际上首先将("a"||"e"||"i"||"o"||"u")
逐出"a"
,然后仅保留"a"
。
您必须指定每个案例,例如if letters[idx]=="a" or letters[idx]=="e" or ...
另一种解决方案是使用正则表达式,如if letters[idx] =~ /[aeiou]/
在ruby中,你可以更加明确地实现所有这些,比如说
def pull_vowels(str)
str.scan /[aeiou]/
end