在本文中,我们将研究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", "object"=>nil, "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"], "object"=>nil, "love"=>"mom", "fruit"=>"Kiwi", "vege"=>"potato"}
说明:
在上面的代码中,您可以观察到Hash.compact方法不适用于具有键以及多个值的哈希值。该方法将返回原始哈希,而不会删除nil值键。