执行 BDD 教程和测试要求将单词开头有两个辅音的单词翻译成 pig latin。这是我遇到麻烦的第二个 elsif 语句。代码如下:
def translate(arg)
vowel = ["a", "e", "i", "o", "u"]
vowel_word = "ay"
consonant = ["z", "b", "t", "g", "h"]
consonant_word = "ay"
if vowel.include?(arg[0]) == true
return arg + vowel_word
elsif consonant.include?(arg[0]) == true
foo = arg[1,6]
return foo + arg[0] + consonant_word
elsif (consonant.include?(arg[0]) == true) and (consonant.include?(arg[1]) == true)
foo = arg[2, 5]
return foo + arg[0] + arg[1] + consonant_word
end
end
translate("apple")
translate("banana")
translate("cherry")
我的问题是第三个条件。输出为零,而不是我想要的“errychay”。任何帮助将不胜感激。
最佳答案
那是因为你
consonant = ["z", "b", "t", "g", "h"]
不是一个完整的辅音列表,特别是它不包括 "cherry"
的 arg[0]
,即 "c"
。所以 "cherry"
既不满足 vowel.include?(arg[0])
也不满足 consonant.include?(arg[0])
,也不三个 if
/elsif
条件中的任何一个,条件 block 返回 nil
。
关于ruby - 第三个 elsif 语句生成 nil 和不需要的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35464605/