Ruby中的Hash.compact!示例方法

Hash.compact!方法

在本文中,我们将研究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值键。