ruby-on-rails - #to_s 会失败吗?

标签 ruby-on-rails ruby casting

我正在 Ruby 中构建一个简单的工厂,它返回一个 Callable (在本例中为 Lambda),它知道如何转换为传递的类型的名称(例如 String.name # => 'String').

为了尝试转换 Fixnums,我正在使用 Integer,如果传递的值不可转换,它将失败。同样,我使用 FloatTime.zone.parse(x).to_time 等...

对于 String,然而,我发现自己只是使用 #to_s,我相信,这使得我的 Lambda 有点不一致,因为所有但 String 转换器可能会失败(引发 Exception)。

假设除了 Rails 提供的补丁之外没有恶意的猴子补丁,#to_s 真的永远不会引发异常吗?

最佳答案

每个对象都继承自Object,它实现了默认的to_sinspect,返回“#”字符串。因此,如果您不覆盖该定义,#to_s 将适用于每个类。

但是,人们可以编写自己的 #to_s 实现并在那里引发异常,但这不太可能 - 我无法想象为什么有人要这样做。

关于ruby-on-rails - #to_s 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935161/

相关文章:

c# - 为什么 null 需要在这里进行显式类型转换?

ruby-on-rails - 无方法错误 :undefined method `id' for nil:NilClass

ruby-on-rails - Rails "assign_attributes"未分配嵌套模型

ruby - ruby 中的格式字符串(邮政编码)

ruby - 在 Espresso 中,如何使用 `render` 作为操作名称?

java - 使用通用类型参数转换异常 : Right way to do it?

C++ - 在保持灵活代码的同时处理隐式/显式转换

ruby-on-rails - Rails ruby​​ 类应该放在哪个文件夹中?

ruby-on-rails - Capistrano 无法在应用程序部署中定位 Gemfile 错误

ruby-on-rails - 如何在 rails 2 中做同样的事情?