Ruby中带有示例的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", "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值键。