Ruby 将值(通过变量)传递给自定义函数

Ruby 将值(通过变量)传递给自定义函数,ruby,function,puppet,Ruby,Function,Puppet,我试了一段时间,但不知道我做错了什么。 下面是示例函数(与原始函数类似,只是散列是在原始函数中动态生成的): 在我的舱单上,我有: $h= am_running_oss($::am_os_type) notify { "=*=*= amRunningOS <|:|> ${h} =*=*=*=*=*=*=*=": } $h=am\u running\u oss($::am\u os\u type) 通知{“=*=*=amRunningOS${h}=*=*=*=*=*=*=*=*=*=

我试了一段时间,但不知道我做错了什么。 下面是示例函数(与原始函数类似,只是散列是在原始函数中动态生成的):

在我的舱单上,我有:

$h= am_running_oss($::am_os_type)
notify { "=*=*= amRunningOS <|:|> ${h} =*=*=*=*=*=*=*=": }
$h=am\u running\u oss($::am\u os\u type)
通知{“=*=*=amRunningOS${h}=*=*=*=*=*=*=*=*=*=”:}
(am_os_类型是一个事实,它根据节点类型返回win、mac或linux)


我希望看到捷豹或Slackware作为返回值,但我没有定义。有人知道我做错了什么吗?在将参数传递给函数方面,我还缺少什么吗?干杯

回答我自己的问题,以防谷歌让人在这里寻找同样的人。对我来说,最有效的方法是这样定义
cls

cls = args[0].to_sym if args[0].is_a? String

干杯

请尝试
cls=args[0]。感谢@tihon!但这不起作用。如果使用如下哈希:
{'linux'=>[“Slackware”,…
(而不是使用
:linux
)并从清单中传递一个静态值,如:
$h=am\u running\u oss('mac')
,那么它可以工作。干杯!!在函数中添加
p args[0]
p args[0]。类
,然后查看它在函数中的内容console@tihom:
args[0].class
返回“String”-那么这是一个
String
vs
symbol
问题吗?在这种情况下,我如何将该值传递给
am_running_oss()
替换
$::am_os_type
实际返回字符串?干杯!!
cls = args[0].to_sym if args[0].is_a? String