如何知道具有默认值的参数是否明确?

Pau*_*ler 3 ruby default

我有一个带有默认值的参数的方法.我需要知道值是来自用户还是默认值.用户也可以发送默认值.我怎么知道价值来自哪里?

小智 12

您可以使用Nobu Nakada在2004年提出的技巧:

def some_method( a=(implicit_value=true; 1) )
    puts "a=#{a}; was set #{ implicit_value ? :im : :ex }plicitly"
end

> some_method
a=1; was set implicitly

> some_method 1
a=1; was set explicitly

> some_method 2
a=2; was set explicitly
Run Code Online (Sandbox Code Playgroud)