我正在調用VMware vSphere perl API的perl腳本。我遇到了一些問題,並在Google上搜索時,發現了一個似乎適用於我的解決方案。但是,其中一個重要的代碼是用map
寫的。信用歸功於寫它的VMware社區成員。以下是代碼:不使用映射重寫映射代碼
$datastore_map = map { $_->{'mo_ref'}->{'value'} => $_ } @{$datastore_views || [ ]};
我無法理解上面的行正在做什麼。
所以,你能幫我把上面的行轉換成foreach循環或類似的東西嗎?相信TMTOWTDI,必須有另一種方式來編寫相同的邏輯。
我試圖學習map
功能很多次,但它總是反彈我的頭。因此,我想實現上述邏輯而不使用map
函數。
編輯:
閱讀的答案後,我覺得應該是%datastore_map
而不是$datastore_map
。因爲代碼的下一行是$datastore = $datastore_map->{$moref->{'value'}};
它必須是一個錯字。
我會接受stacoverflow允許我的答案。謝謝你的快速回應。我花了將近一個小時的時間試圖理解它,但卻失敗了。
謝謝。
編輯:
感謝@nickisfat,@choroba和@ikegami的答覆。所有的答案都是正確的,但我只能接受一個。所以我會按照時間順序排在第一位。再次感謝您的答案。
如果是這樣的下一行,你代碼應該是'my $ datastore_map = {map BLOCK LIST};'。調整我的節點。 (如果你問我,可能會添加一層間接尋址。) – ikegami