【发布时间】:2012-08-09 23:36:13
【问题描述】:
这是在 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 选项的代码之间的不对称。一种能够在两者之间进行更改而不引起错误的模式将是一件好事。
【问题讨论】: