gpt4 book ai didi

ruby - NilClass、TrueClass 和 FalseClass 的用途是什么

转载 作者:数据小太阳 更新时间:2023-10-29 07:03:38 25 4
gpt4 key购买 nike

NilClassTrueClassFalseClass 各有一个实例,即niltruefalse,它们是常量,拥有这些类的目的是什么?为什么它们不能是 Object 类的实例,并且所有相关方法都简单地定义为 niltrue 上的单例方法错误?一个相关的问题是,为什么不将这些定义为常量?

最佳答案

它遵循“一切皆对象”和“对象由它们作为实例的类专门化”的思想。

niltruefalse 都是对象(因此是具有方法的类的实例化)。它们是 1) 各自类型的唯一居民并且是 2) 不可变对象(immutable对象)的强加允许实现优化 - 实际上,不是一个 够了吗?

一个有用的错误消息,没有专门针对值:x.class“just works”。

> > nil.foo
> => #<NoMethodError: undefined method `foo' for nil:NilClass>

我很高兴它说 NilClass :-)

这种类实例方法还使重新打开 NilClass(无论好坏)变得简单,并且与其他类型的处理方式一致。

至少从 Ruby 1.9.2 开始,不可能重新分配 truefalsenil(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 {|tru­e|}
> => #<SyntaxError: Can't change the value of true>

快乐编码。

关于ruby - NilClass、TrueClass 和 FalseClass 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8025132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com