1
有人可以解釋我,爲什麼我的原始常量LIST
從一開始就被操縱在最後?我認爲常量可能只是一次初始化。我想將操作存儲在新陣列中(new_list
),而不影響原始操作(LIST
)。奇怪的紅寶石行爲與恆定
$ned = "foo"
$med = ""
print LIST = [:nrd, :mrd_y] # -> [:nrd, :mrd_y]
list = LIST
new_list = list.delete_if { |element|
case element
when :nrd then $ned.empty?
when :mrd_y then $ned.empty? || $med.empty?
end
}
print new_list # -> [:nrd]
print LIST # -> [:nrd] instead of [:nrd, :mrd_y]
你也可以使用['reject'(HTTP://紅寶石文檔。 org/core-2.0/Array.html#method-i-reject),如果這使得塊的邏輯更清晰。我認爲'select'或'reject'方法是我期望在Ruby代碼中看到的。 –
@ muistooshort你是對的!我有一段時間忘了「拒絕」。感謝指針。現在更新。 –
感謝您的建議。在這兩種情況下,我不需要中間步驟'list = LIST'了,正確的(只是'LIST.reject')? – ericMTR