gpt4 book ai didi

ruby - 无法简化 `if` 语句条件

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:07 25 4
gpt4 key购买 nike

这是一个函数,用于在 if 语句中计算字符串中包含的元音:

 def count_vowels(string)
sum = 0
n = 0
while n < string.length
if string[n] == "a"||string[n]=="i"||string[n]=="u"||string[n]=="e"||string[n]=="o"
sum += 1
end
n+=1
end
return sum
end

我发现重复的 string[n] == 是多余的,并将其替换为:

if string[n] == ("a"||"i"||"u"||"e"||"o")

但是,在这段代码中,函数没有返回正确的计数。为什么简化的 if 语句在这里不起作用?

最佳答案

它不起作用,因为 a == (x || y) 没有扩展为 a == x || a == y.

相反,a(x || y) 的结果进行比较。

if string[n] == ("a"||"i"||"u"||"e"||"o")

相当于:

if string[n] == "a"

因为:

("a"||"i"||"u"||"e"||"o") #=> "a"

如果您想简化代码,请使用 count :

def count_vowels(string)
string.count('aeiou')
end

关于ruby - 无法简化 `if` 语句条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com