ruby - 如何在一行中更改方法的结果?
问题描述
我需要稍微更改方法的输出:执行函数,如果它是空字符串,则将其转换为“1”。我怎么能在一行上写这么短?
var = some_really_long_method(foo)
var = "1" if var == ""
我在下面尝试过,但这确实调用了两次该方法,对吧?
var = some_really_long_method(foo) == "" ? "1" : some_really_long_method(foo)
解决方案
您可以使用Object#then:
def some_really_long_method
p 'called'
p res = ["", "10"].sample
res
end
var = some_really_long_method.then { |m| m == "" ? '1' : m }
您可以自己检查该方法是否被调用一次。
推荐阅读
- python - 用于匹配子字符串的正则表达式
- reactjs - createBottomTabNavigator 保持安装堆栈
- javascript - 如何防止按键重复被触发 - JavaScript/jQuery
- java - 创建的通知android未显示在手机中
- excel - 运行时错误“1004”方法范围类的自动筛选失败
- javascript - 如何在 Leaflet 中单击时返回有关 geojson 多边形的详细信息?
- python - spark-submit 作业在集群模式下不起作用
- python - SQLAlchemy 查询 API 无法与提示一起正常工作
- java - 解析具有 JSON 格式列的外部文件
- dart - 带有动画儿童尺寸的 Flutter PageView.builder