0
我在嘗試這個東西一段時間,但無法弄清楚我做錯了什麼。 下面是示例功能(這是類似於原始之一,除了散列,這是在原來的動態生成的):將值(通過變量)傳遞給自定義函數
module Puppet::Parser::Functions
newfunction(:am_running_oss, :type => :rvalue) do |args|
oss = {:linux=>["Slackware", "RedHat", "Caldera"],
:mac=>["Jaguar", "Lion", "Tiger", "Kodiak"],
:win=>["Chicago", "Daytona", "Longhorn"]}
cls = args[0]
if oss.key?(cls)
return oss[cls][0]
else
return 'undefined'
end
end
end
,然後在我的清單中,我有這樣的:
$h= am_running_oss($::am_os_type)
notify { "=*=*= amRunningOS <|:|> ${h} =*=*=*=*=*=*=*=": }
(am_os_type是一個事實,即返回贏得,MAC或的Linux基於節點類型)
我期待看到Jaguar或Slackware作爲返回值,但我得到的是undefined。有誰知道我做錯了什麼?有沒有什麼東西仍然遺漏了參數的功能?乾杯!!
嘗試'cls = args [0] .to_sym' – tihom
謝謝@tihon!那雖然不起作用。如果有這樣的散列:'{'linux'=> [「Slackware」,.....'(而不是':linux')並從清單傳遞一個靜態值,如:'$ h = am_running_oss 'mac')',那麼它工作。乾杯!! – MacUsers
在函數中添加'p args [0]'和'p args [0] .class'並查看它在控制檯中的含義 – tihom