这是在 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 有这方面的模式吗?(最小更好——我不需要完整的命令行选项解析器。)
咆哮 PS:我不喜欢处理默认选项true
的代码与处理默认false
选项的代码之间的不对称。一种在两者之间进行更改而不引起错误的模式将是一件好事。