- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
NilClass
、TrueClass
和FalseClass
各有一个实例,即nil
、true
和false
,它们是常量,拥有这些类的目的是什么?为什么它们不能是 Object
类的实例,并且所有相关方法都简单地定义为 nil
、true
和 上的单例方法错误
?一个相关的问题是,为什么不将这些定义为常量?
最佳答案
它遵循“一切皆对象”和“对象由它们作为实例的类专门化”的思想。
nil
、true
和 false
都是对象(因此是具有方法的类的实例化)。它们是 1) 各自类型的唯一居民并且是 2) 不可变对象(immutable对象)的强加允许实现优化 - 实际上,不是一个 零
够了吗?
一个有用的错误消息,没有专门针对值:x.class
“just works”。
> > nil.foo
> => #<NoMethodError: undefined method `foo' for nil:NilClass>
我很高兴它说 NilClass
:-)
这种类实例方法还使重新打开 NilClass
(无论好坏)变得简单,并且与其他类型的处理方式一致。
至少从 Ruby 1.9.2 开始,不可能重新分配 true
、false
或 nil
(Python 2.x允许重新分配 True/False,但在 Python 3.x 中不允许)。请注意,因为 true/false/nil
是不是 常量,所以它们可以被优化到 AST 中——或者实现使用的任何东西——作为“文字值”而无需常量外观-向上。
> > VERSION
> => "1.9.2"
> > true = false
> => #<SyntaxError: Can't change the value of true>
> > [].each {|true|}
> => #<SyntaxError: Can't change the value of true>
快乐编码。
关于ruby - NilClass、TrueClass 和 FalseClass 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8025132/
来自文档:http://ruby-doc.org/core-2.2.0/TrueClass.html#method-i-7C true | puts("or") true || puts("logi
为什么我们不能在 Ruby 中初始化 TrueClass?我明白了: TrueClass.new # => NoMethodError: undefined method `new' for True
这是一个理论问题:是否可以将 FalseClass 的行为更改为像 TrueClass 一样?可以覆盖 to_s、xor、&、|行为,但这还不够。 如果你喜欢测试驱动开发,请听从我同事的建议: put
我在 custom.css.scss 文件的 {} 部分输入了一个拼写错误并保存了。然后将其改回原来的样子并再次保存。 然后,当我刷新浏览器时,我收到了标题为“NoMethodError in Sta
我正在使用Spree,并设置了spree_easy_contact扩展名。 当我发送电子邮件时,它会正确发送,并正确地将其保存到数据库,但是我被重定向到错误屏幕: NoMethodError in C
NilClass、TrueClass 和FalseClass 各有一个实例,即nil、true和false,它们是常量,拥有这些类的目的是什么?为什么它们不能是 Object 类的实例,并且所有相关方
我想弄清楚是否有一种简单的方法来执行以下操作,而不是将 to_i 方法添加到 TrueClass/FalseClass。 这是一个难题:我的 Rails 应用程序中有一个 bool 字段 - 显然在
我的模型中的这一特定行 validates :password, length: { minimum: 8 }, allow_nil: true, on: :create
在 acts_as_recommendable 插件中运行 rake 任务时出现 undefined method [] for true:TrueClass 错误。错误指向以下行。 items
我正在尝试测试我的 bool 字符串方法之一,但出现以下错误: undefined method `to' for true:TrueClass describe 'is_tall?' do it
我正在尝试测试我的 bool 字符串方法之一,但出现以下错误: undefined method `to' for true:TrueClass describe 'is_tall?' do it
我刚刚开始维护其他人的代码库,但我无法让它在生产环境中本地运行。预编译样式表时会出现错误。 这是一个在 Ruby 1.9.2 上运行的 Rails 3.2.6 应用程序。我注意到在下面的输出中,gem
我上传了一张按预期工作的图片,除非我向 ImageUploader 添加了一个额外的进程 (auto_orient)。代码如下: class ImageUploader [500, 500] v
当发现这个时,我正在研究序列化值。 Ruby 有一个 TrueClass类,和一个 FalseClass类,但它没有 Boolean 类。我想知道这是为什么。 我发现使用 Boolean 有一些优势;
我在 Rails 2.3.8 项目上使用 Devise 1.0.8。在我的 Controller 测试中,我有: context "when current_user is admin" do s
我不知道发生了什么,这让我脱发! 我试图让 cap:deploy 命令工作,然后,不知从哪里,我得到了这个错误:connection failed for: domain.com (NoMethodE
在运行我的 worker 时,我不断收到 undefined method '[]' for true:TrueClass 的间歇性错误。一半的时间它会工作,然后另一个它只是因为这个错误而失败。这似乎
为什么不能在Fixnum,Bignum,Float,上定义singleton方法Symbol类对象,但是FalseClass和TrueClass可以有吗? C:\>ruby -v ruby 2.0.0
将 rspec-rails 从版本 2.14.0 更新到 3.0.0.beta2 后,所有使用 be_true 的测试或 be_false 失败。 Failure/Error: user.new_r
我无法构建 rails sqlite3 gem。无论我安装 sqlite3-ruby 还是只安装 sqlite3,它都失败了。由于 sqlite3 是由 macports 安装的,所以它都在/opt/
我是一名优秀的程序员,十分优秀!