gpt4 book ai didi

ruby-on-rails - Ruby:在 Hash 中使用 try 的两种方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:44 25 4
gpt4 key购买 nike

我想在 Ruby 中使用 try 提取一个值。

我发现有两种方法可以做到这一点,并在 irb 中试用了它。

>> hash = { a: 1, b: 2 }
=> {:a=>1, :b=>2}
>> hash.try(:a)
=> nil
>> hash.try(:[], :a)
=> 1

我有两个问题,

  1. hash.try(:[], :a)hash.try(:a) 有什么区别?我四处搜索,发现人们同时使用这两种方式。
  2. 我看到很多地方使用 hash.try(:a) 来检索值,但为什么我的试验返回 nil?

最佳答案

hash.try(:[], :a)
# 1

尝试在 hash 上调用公共(public)方法 [] 作为 :a 作为参数传递给 [] .由于 :a 是散列中的现有键,因此它返回其值。

hash.try(:a)
# nil

尝试在hash 上调用公共(public)方法:a。作为 hash 因为接收方不响应 :a 然后它返回 nil

需要说明的是,try 的参数首先是要在接收方上调用的方法,所有其他参数都是被调用方法的参数。


如果您的哈希可以响应方法 :ahash.try(:a) 将返回在 hash< 上调用的该方法的值:

# Just for example purposes
class Hash; def a; :a_monkey_patched_value_for_a; end

hash.try(:a)
# :a_monkey_patched_value_for_a

关于ruby-on-rails - Ruby:在 Hash 中使用 try 的两种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55698902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com