gpt4 book ai didi

ruby - 在 Ruby 中是否有一种惯用的方法来指定可选参数的默认值?

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

是否有更简洁和惯用的方式来编写以下代码,用于为方法指定可选参数(在 params/options 哈希中)的默认值?

def initialize(params={})
if params.has_key? :verbose
@verbose = params[:verbose]
else
@verbose = true # this is the default value
end
end

我很乐意将其简化为如下所示:

def initialize(params={})
@verbose = params[:verbose] or true
end

哪个几乎有效,除了你真的需要使用has_key? :verbose 作为条件,而不是仅仅评估 params[:verbose],以便涵盖您想要指定“false”值的情况(即,如果您想要通过:verbose => false 作为本例中的参数)。

我意识到在这个简单的例子中我可以轻松做到:

def initialize(verbose=false)
@verbose = verbose
end

但是,在我的真实代码中,我实际上有一堆可选参数(除了一些必需参数之外),我想将可选参数放在 params 哈希中,这样我就可以轻松地只指定(按名称) 我想要的几个,而不是必须按顺序列出它们(并且可能不得不列出我实际上不想要的)。

最佳答案

一个常见的模式是使用

def foo(options = {})
options = { :default => :value }.merge(options)
end

您最终会得到 options 是一个包含传入值的散列,默认散列中的选项与未提供的选项一样。

关于ruby - 在 Ruby 中是否有一种惯用的方法来指定可选参数的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972284/

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