Есть ли более краткий и идиоматический способ написать следующий код, который используется для указания значений по умолчанию для необязательных параметров (в хэше 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
но в моем реальном коде у меня на самом деле есть куча необязательных параметров (в дополнение к нескольким обязательным), и я хотел бы поместить необязательные параметры в хеш параметров, чтобы я мог легко указать (по имени) только несколько которые я хочу, вместо того, чтобы перечислять их все по порядку (и, возможно, перечислять те, которые мне на самом деле не нужны).