gpt4 book ai didi

ruby - 默认情况下使选项为 false

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

这是在 Ruby 中设置默认值的常用方法:

class QuietByDefault
def initialize(opts = {})
@verbose = opts[:verbose]
end
end

这是一个容易落入的陷阱:

class VerboseNoMatterWhat
def initialize(opts = {})
@verbose = opts[:verbose] || true
end
end

正确的做法是:

class VerboseByDefault
def initialize(opts = {})
@verbose = opts.include?(:verbose) ? opts[:verbose] : true
end
end

编写 VerboseByDefault 的最佳/最简洁的方法是什么? (当然,我可以把它分解出来。)

在一般的 Ruby 代码中,哪种模式被广泛使用(如果有的话)? ActiveSupport 有这方面的模式吗? (越少越好——我不需要完整的命令行选项解析器。)

咆哮 P.S.:我不喜欢处理默认 true 选项的代码与处理默认 false 选项的代码之间的不对称。一种可以在两者之间进行更改而不会导致错误的模式将是一件好事。

最佳答案

一个简单的方法是使用 Hash#fetch 的第二个参数

class VerboseByDefault
def initialize(opts = {})
@verbose = opts.fetch(:verbose, true)
end
end

对于复杂的默认值,fetch 也可以获取一个 block ,如果值不在哈希中则执行该 block 。请参阅:http://ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch

关于ruby - 默认情况下使选项为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939405/

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