Ruby中带有示例的Hash.fetch()方法
Hash.fetch()
方法
在本文中,我们将研究Hash.fetch()
方法。可以借助其名称来预测此方法的工作,但是它并不像看起来那样简单。好吧,我们将在其余内容中借助其语法和程序代码来理解此方法。
方法说明:
此方法是在ruby库中定义的公共实例方法,特别是针对Hash类。此方法需要通过此方法获取其值的键。此方法的工作方式是,它从哈希对象中为给定键返回一个或多个值。如果在哈希实例中找不到键,则结果取决于完成的方法调用的类型。下面列出了可能的方法调用:
没有任何其他自变量:如果未提供其他自变量且未找到键,则该方法将引发“KeyError”异常。
带有其他参数:另一个参数被视为默认参数。如果找不到该键,则将从该方法返回该默认参数。
Withblock:如果提供了该块,但未找到键,则该块将运行,并且如果未找到键,将返回结果。
语法:
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
说明:
在上面的代码中,您可以观察到我们正在将一个块与方法一起传递。当在哈希对象中找不到键时,该块已运行,并且已返回其值。