gpt4 book ai didi

Ruby 条件语句/案例表达式

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

我是编码新手,我有一个关于 Ruby 条件的快速问题,特别是 Case 表达式。我有一个方法,如果字符串长度是奇数,我想返回一个字符串“奇数”,如果字符串长度是偶数,我想返回“偶数”。

我知道一些简单的东西,我可以使用 if/else 条件语句获得结果,但是 case 表达式只返回“nil”。任何帮助将不胜感激。

def odd_or_even(string)
case string
when string.length.even? then "even"
when string.length.odd? then "odd"
end
end

odd_or_even("Ruby") # Wanting to return even rather than nil
odd_or_even("Rails") # Wanting to return odd rather than nil

最佳答案

您的case 语句写错了。它有两种形式,这与其他语言相比是不寻常的。第一种形式接受一个参数,并将该参数与所有可能的情况进行比较。第二种形式没有参数,每个案例都是独立评估的。

最简单的修复是这样的:

def odd_or_even(string)
case
when string.length.even? then "even"
when string.length.odd? then "odd"
end
end

这是因为在使用参数“Ruby”调用时,对于 Ruby,您的代码看起来像这样:

def odd_or_even(string)
case string
when true then "even"
when false then "odd"
end
end

您的 string 值与 truefalse 不匹配,因此您从不匹配的情况中得到 nil .

您可以大大清理您的代码。想一想:有什么东西不是偶数而且不是奇数吗?不是真的:

def odd_or_even(string)
string.length.even? ? 'even' : 'odd'
end

关于Ruby 条件语句/案例表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39668430/

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