Ruby计算用户余额总和的代码能否优化为单行写法?
更简洁的单行写法
当然有,Ruby提供了几种更简洁的方式来实现这个累加逻辑:
推荐写法(Ruby 2.4+):利用数组的
sum方法结合块,直接一行搞定:def total_balance users.sum(&:balance) endsum方法会自动遍历数组,对每个元素执行块里的操作(这里就是取balance属性),然后累加所有结果,完全替代了你原来的循环逻辑。兼容旧版本Ruby的写法:如果你的Ruby版本低于2.4,可以用
inject(别名reduce)来实现单行:def total_balance users.inject(0) { |total, user| total + user.balance } end这里
inject(0)初始化累加器为0,然后每次迭代把当前用户的balance加到累加器上,最后返回总和。
这两种写法都比你原来的代码更简洁,同时保持了可读性。
内容的提问来源于stack exchange,提问作者marcHoll90
相关产品推荐
相关产品推荐

