我正在 Ruby 中构建一个简单的工厂,它返回一个 Callable
(在本例中为 Lambda
),它知道如何转换为传递的类型的名称(例如 String.name # => 'String'
).
为了尝试转换 Fixnum
s,我正在使用 Integer
,如果传递的值不可转换,它将失败。同样,我使用 Float
、Time.zone.parse(x).to_time
等...
对于 String
,然而,我发现自己只是使用 #to_s
,我相信,这使得我的 Lambda
有点不一致,因为所有但 String
转换器可能会失败(引发 Exception
)。
假设除了 Rails 提供的补丁之外没有恶意的猴子补丁,#to_s
真的永远不会引发异常吗?
最佳答案
每个对象都继承自Object,它实现了默认的to_s
和inspect
,返回“#”字符串。因此,如果您不覆盖该定义,#to_s 将适用于每个类。
但是,人们可以编写自己的 #to_s 实现并在那里引发异常,但这不太可能 - 我无法想象为什么有人要这样做。
关于ruby-on-rails - #to_s 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935161/