2

Puppetのドキュメントによると:

宣言型言語では順序は重要ではありません。

その場合、なぜこのコードが機能するのでしょうか。

class myserver {
  $package_to_install = 'libcapture-tiny-perl'
  package {
   $package_to_install: ensure => present;
  }
}

しかし、このコードは機能しませ

class myserver {
  package {
   $package_to_install: ensure => present;
  }
  $package_to_install = 'libcapture-tiny-perl'
}

順序が重要な場合、一方が機能し、もう一方が機能しない理由はわかりますが、順序は重要ではないので、なぜそれらの動作が異なるのでしょうか。

4

1 に答える 1

1

免責事項:私はPuppet開発者の1人です。

私たちの言語は、私たちのドキュメントが主張するように、実際には宣言型ではないためです。実際に注文されています。:(

評価は、クラスまたは宣言内で多かれ少なかれ上から下に行われます。その評価の成果物はカタログのリソースですが、カタログの評価ではありません。

DSLは、処理において完全に宣言型であるカタログ(リソースのグラフ)を構築するための完全に宣言型ではない方法と考えてください。

于 2012-06-20T20:41:05.037 に答える