在本文中,我们将研究Hash.compact!方法。可以借助其名称来预测此方法的工作,但是它并不像看起来那样简单。好吧,我们将在其余内容中借助其语法和程序代码来理解此方法。
方法说明:
此方法是在Ruby的库中定义的公共实例方法,特别是针对Hash类。此方法是破坏性方法的示例之一,该方法带来的更改是永久性的或非临时性的。这种类型的方法会影响自哈希实例。此方法的工作方式是从哈希中删除所有包含nil值的键,并返回一个不包含任何nil值的新Hash对象。
语法:
Hash_object.compact!
Argument(s)
需要:
此方法不带任何参数。
范例1:
=begin Ruby program to demonstrate compact! method =end hash1={"color"=>"Black","object"=>nil,"love"=>"mom","fruit"=>"Kiwi","vege"=>"potato"} puts "Hash compact! implementation" puts "Elements after compact! operation: #{hash1.compact!}" puts "Array elements are:" puts "#{hash1}"
输出结果
Hash compact! implementation Elements after compact! operation: {"color"=>"Black", "love"=>"mom", "fruit"=>"Kiwi", "vege"=>"potato"} Array elements are: {"color"=>"Black", "love"=>"mom", "fruit"=>"Kiwi", "vege"=>"potato"}
说明:
在上面的代码中,您可以观察到,借助于Hash.compact方法,我们正在从哈希对象中删除nil个值键。此方法带来了实际哈希实例中的更改,因为该方法是破坏性方法的一个示例,在程序打印调用了该方法的原始哈希时,您可以自己观察一下。
范例2:
=begin Ruby program to demonstrate compact! method =end hash1={"color"=>[nil,nil,"black"],"object"=>nil,"love"=>"mom","fruit"=>"Kiwi","vege"=>"potato"} puts "Hash compact! implementation" puts "Elements after compact! operation: #{hash1.compact!}" puts "Array elements are:" puts "#{hash1}"
输出结果
Hash compact! implementation Elements after compact! operation: {"color"=>[nil, nil, "black"], "love"=>"mom", "fruit"=>"Kiwi", "vege"=>"potato"} Array elements are: {"color"=>[nil, nil, "black"], "love"=>"mom", "fruit"=>"Kiwi", "vege"=>"potato"}
说明:
在上面的代码中,您可以观察到Hash.compact!该方法不适用于具有键以及多个值的散列。该方法将返回原始哈希,而不会删除nil值键。