2016-09-07 66 views
1

尝试使用伪STDLIB模块的成员函数:使用成员函数时木偶STDLIB“成员”功能不工作

$myvariable = 'FOO' 

然后:

member(['FOO','BAR'], $myvariable) 

有效我不断收到错误消息:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Function 'member' must be the value of a statement at /etc/puppet/modules/mymodule/manifests/init.pp:### 
+0

@MattSchuchard在他的回答中解释了错误信息,但我不禁想到错误必定是另一个问题的症状。毕竟,调用'member()'函数并忽略结果会有什么意义?这种事情是我们倾向于请求[mcve]的原因之一。 –

回答

2

查看成员的stdlib文档,我们看到该成员是一个右值。这意味着在这种情况下,您需要分配输出。这就是must be the value of a statement的错误信息暗示的内容。请注意一个有用的维基百科关于l值和r值的文章https://en.wikipedia.org/wiki/Value_(computer_science)#lrvalue

例如,如果您将member(['FOO','BAR'], $myvariable)的输出分配给变量或资源属性,那么您的代码将起作用。

例如:

$myvariable = 'FOO' 
$variable = member(['FOO','BAR'], $myvariable) 
notify { $variable: } 

将在编译过程中导致通知 '真正的'。

+0

谢谢,这真的很有帮助! – user3614014