什么是try_convert ruby​​方法?

时间:2017-11-07 16:29:33

标签: ruby

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

1 个答案:

答案 0 :(得分:3)

根据我的经验,

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_ary .to_a),Hash.try_convert(object)调用object.to_hash不< / strong> .to_h)。

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