Ruby中带有示例的Hash.fetch()方法

Hash.fetch()方法

在本文中,我们将研究Hash.fetch()方法。可以借助其名称来预测此方法的工作,但是它并不像看起来那样简单。好吧,我们将在其余内容中借助其语法和程序代码来理解此方法。

方法说明:

此方法是在ruby库中定义的公共实例方法,特别是针对Hash类。此方法需要通过此方法获取其值的键。此方法的工作方式是,它从哈希对象中为给定键返回一个或多个值。如果在哈希实例中找不到键,则结果取决于完成的方法调用的类型。下面列出了可能的方法调用:

  • 没有任何其他自变量:如果未提供其他自变量且未找到键,则该方法将引发“ KeyError”异常。

  • 带有其他参数:另一个参数被视为默认参数。如果找不到该键,则将从该方法返回该默认参数。

  • With block:如果提供了该块,但未找到键,则该块将运行,并且如果未找到键,将返回结果。

语法:

    Hash_object.fetch(…,[default]);
    or
    Hash_object_fetch(key(s))
    or
    Hash_object_fetch{|key| block}

Argument(s) 需要:

传递参数没有限制。您可以根据需要传递参数。最后一个参数将始终被视为默认参数。

范例1:

=begin
  Ruby program to demonstrate fetch method
=end	

hash1={"color"=>"Black","object"=>"phone","love"=>"mom","fruit"=>"Kiwi","vege"=>"potato"}

puts "Hash.fetch implementation"

puts "Enter the key you want to search:"
ky = gets.chomp

if(hash1.fetch(ky))
	puts "Key found successfully. The value is #{hash1.fetch(ky)}"
else
	puts "No key found"
end

输出结果

RUN 1:
Hash.fetch implementation
Enter the key you want to search:
 color
Key found successfully. The value is Black

RUN 2:
Hash.fetch implementation
Enter the key you want to search:
 velvet
key not found: "velvet"
(repl):12:in `fetch'
(repl):12:in `<main>'

说明:

在上面的代码中,您可以简单地观察到我们已经使用了用户要求的键来调用该方法。在运行2中,您可能会看到在哈希中找不到键时引发了异常。

范例2:

=begin
  Ruby program to demonstrate fetch method
=end	

hash1={"color"=>"Black","object"=>"phone","love"=>"mom","fruit"=>"Kiwi","vege"=>"potato"}

puts "Hash.fetch implementation"

puts "Enter the key you want to search:"
ky = gets.chomp

puts "The value of #{ky} is #{hash1.fetch(ky,"Not found")}"

输出结果

Hash.fetch implementation
Enter the key you want to search:
 cloth
The value of cloth is Not found

说明:

在上面的代码中,您可以观察到我们已经在方法内部传递了默认参数以及键。您可以看到,在哈希实例中未找到键时,将返回默认对象。

范例3:

=begin
  Ruby program to demonstrate fetch method
=end	

hash1={"color"=>"Black","object"=>"phone","love"=>"mom","fruit"=>"Kiwi","vege"=>"potato"}

puts "Hash.fetch implementation"

puts "Enter the key you want to search:"
ky = gets.chomp

puts "The value of #{ky} is #{hash1.fetch(ky){|ky| "Sorry! #{ky} is missing"}}"

输出结果

Hash.fetch implementation
Enter the key you want to search:
 cloth
The value of cloth is Sorry! cloth is missing

说明:

在上面的代码中,您可以观察到我们正在将一个块与方法一起传递。当在哈希对象中找不到键时,该块已运行,并且已返回其值。