【问题标题】:What is the try_convert ruby method used for?try_convert ruby​​ 方法是做什么用的?
【发布时间】:2017-11-07 16:29:33
【问题描述】:

我了解try_convert 将尝试对对象使用隐式转换,如果隐式转换结果为nil、对象为nil 或不存在隐式转换方法,则返回niltry_convert 的用例是什么?它是否意味着测试输入并在它是预期类型时返回它,否则返回nil,同时避免获得TypeError?在这种情况下为什么不使用is_a

【问题讨论】:

    标签: ruby


    【解决方案1】:

    try_convert 根据我的经验,很少使用。但用例是严格转换对象,而不是更松散地使用它们的表示。例如,考虑:

    /foo/.to_s #=> "(?-mix:foo)"
    /foo/.to_str #=> NoMethodError: undefined method `to_str' for /foo/:Regexp
    
    String.try_convert(/foo/) #=> nil
    

    没有在类上定义to_str 方法,因为正则表达式不字符串一样。

    同样,Array.try_convert(object) 调用 object.to_arynot .to_a),Hash.try_convert(object) 调用 object.to_hashnot .to_h)。 p>

    因此,例如,如果您希望定义一个真正行为类似于 String 的自定义类,那么建议定义一个 to_str 方法 - 因此(除其他外)你可以在这个类的实例上调用String.try_convert

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 2013-04-28
      • 2015-04-18
      • 2011-01-18
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2023-04-10
      相关资源
      最近更新 更多