我不太瞭解Ruby,希望有人能夠幫助我理解這段代碼在做什麼。瞭解來自Puppet模塊的Ruby代碼openstack/nova
newproperty(:value, :array_matching => :all) do
desc 'The value of the setting to be defined.'
def insync?(is)
return true if @should.empty?
return false unless is.is_a? Array
return false unless is.length == @should.length
return (
is & @should == is or
is & @should.map(&:to_s) == is
)
end
我不知道在所有這行...
newproperty(:value, :array_matching => :all) do
......在做什麼。正在定義一個函數,它接受兩個參數:值和array_matching?這是一個循環?我不明白什麼:array_matching =>:全部是。
接下來是......
desc 'The value of the setting to be defined.'
...這是某種形式的內置文檔?接下來是這個位:
def insync?(is)
return true if @should.empty?
return false unless is.is_a? Array
return false unless is.length == @should.length
return (
is & @should == is or
is & @should.map(&:to_s) == is
)
我猜想一個名爲「insync」的函數正在被定義。不確定什麼'?'手段。另外我想@should是在父範圍中聲明的一些全局變量。
感謝
感謝您的回答。我仍然不明白newproperty子例程中參數聲明中'=>'的含義。 :) –
我不完全確定,所以我搜索了它,發現這個相同的資源。它看起來像一個名爲'namevar'的傀儡的獨特屬性。 http://garylarizza.com/blog/2013/11/25/fun-with-providers/ cntrl f到部分'Namevars是獨特的小雪花' –