Ruby单行三目运算符使用return语句报错该如何修复?
错误原因
Ruby 中 return 关键字的优先级高于三目运算符(?:),你当前的写法会导致语法解析失败,不符合三目运算符的语法规则。
修复方案
你可以选择两种常见的修复方式,都可以正常运行:
- 方案1:将
return提取到三目运算的最外层,把整个三目运算的结果作为返回值def odd_or_even(number) return number % 2 == 0 ? "even" : "odd" end odd_or_even(3) - 方案2:遵循Ruby的书写惯例省略
return,Ruby方法会默认返回最后一行表达式的执行结果,写法更简洁def odd_or_even(number) number % 2 == 0 ? "even" : "odd" end odd_or_even(3)
额外优化建议
你还可以用Ruby内置的Integer#even?方法简化判断逻辑,可读性更高:
def odd_or_even(number) number.even? ? "even" : "odd" end
内容的提问来源于stack exchange,提问作者Barbie Zoani Gray
相关产品推荐
相关产品推荐

