gpt4 book ai didi

ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:31 24 4
gpt4 key购买 nike

两者都可以

def setup(options = {})
options.reverse_merge :size => 25, :velocity => 10
end

def setup(options = {})
{ :size => 25, :velocity => 10 }.merge(options)
end

在方法的参数中分配默认值。

问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?

编辑:我无意中添加了 bang (!)...并不是要询问 no bang 方法与 bang 方法之间的区别

最佳答案

我倾向于使用reverse_merge 方法:

options.reverse_merge(size: 25, velocity: 10)

原因是:

  1. 当散列用作方法参数时,您不必为散列写大括号。
  2. 从左到右阅读,您会立即知道这行代码正在处理传入的选项散列,而不是先了解一个新的散列,然后意识到选项正在合并到其中。
  3. 如果您确实想要更新原始选项散列,就像添加!一样简单reverse_merge! 方法。而对于另一种方法,您现在必须添加变量(重新)分配。

最终,我认为这只是一种风格选择,完全取决于您以及您的大脑感觉如何。

关于ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25724128/

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