2016-09-07 101 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