如何在 Puppet::Functions 中定义可选参数

How to define optional parameters in Puppet::Functions

我想用 Puppet::Functions.create_function 创建一个人偶 ruby 函数。在这里我定义了一些参数。其中一些应该是可选的或应该有默认值。

Puppet::Functions.create_function(:'foo') do
  dispatch :bar do
    param 'String', :param_1
    param 'String', :param_2
    param 'String', :param_3

    def bar(a,b,c)
      puts "#{a} - #{b} - #{c}"
    end
end

param_1 和 param_3 应该是可选的。有办法吗?

下面应该做的

  Puppet::Functions.create_function(:foo) do
    dispatch :foo do
      param 'String', :param_1
      optional_param 'String', :param_2
      optional_param 'String', :param_3

      def foo(param_1, param_2='default_value', param_3='default_value')
        puts "#{param_1} - #{param_2} - #{param_3}"
      end
  end

示例见此处https://github.com/puppetlabs/puppetlabs-stdlib/blob/master/lib/puppet/functions/to_json_pretty.rb