You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何在一行代码中完成赋值、nil检查并返回结果?

当然可以!Ruby的语法灵活性刚好能帮你实现这个需求

你完全可以把赋值、nil检查和返回逻辑浓缩到更简洁的代码里,甚至一行就能搞定。这里有几种优雅的实现方式:

方式一:简洁且可读性强的版本

def create_button(content)
  Button.new(title, url) if (title = content.dig(0, 'text')) && (url = content.dig(0, 'url'))
end

这个写法的逻辑和你原函数完全一致:

  • 我们在if的条件里完成title和url的赋值
  • 利用Ruby的短路求值特性:如果title赋值后是nil,后面的url赋值会直接跳过,整个条件为false,方法自动返回nil
  • 只有当title和url都不为nil时,才会创建并返回Button实例

方式二:极致紧凑的一行版本

如果追求把方法体压缩成一行(虽然可读性会稍弱),可以这么写:

def create_button(content); Button.new(title, url) if (title = content.dig(0, 'text')) && (url = content.dig(0, 'url')); end

补充说明

如果你更习惯用三元表达式,也可以写成这样:

def create_button(content)
  (title = content.dig(0, 'text')) && (url = content.dig(0, 'url')) ? Button.new(title, url) : nil
end

效果和上面的版本完全一样,只是写法风格不同。

内容的提问来源于stack exchange,提问作者Fogmeister

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:35:03