为什么对象类型的名称与它所属的类的名称不同?

时间:2013-12-24 14:27:04

标签: r oop

我目前正在阅读Chambers' Software for Data Analysis中的第9章,而在第337页,他说:

  相反,对于classe有一些固有的限制   contains=论点。此处提供的类必须是:

     
      
  1. ...
  2.   
  3. 基本R对象类型之一,但不是那些引用或非标准类型;例如,不是"environment" 或   "symbol"(类"name"的对象类型)
  4.   

重点是我的。

我天真的问题是,为什么对象类型(symbol)的名称与类名(name)不同?这与我对作为类实例的对象的理解发生冲突。还有其他这样的例子,我应该如何看待这里的命名约定?

1 个答案:

答案 0 :(得分:1)

我认为这会阻止你构建或需要另一层次的间接。可以假设解释器能够处理“包含”规范中的预定义对象类型,但是不能处理更灵活的类型或者需要查找传递给它的值中的内容。 “符号”是一种寻找某种东西的方式,而不是“某种东西”本身。

除了“模式”和“类”之外,R还有“存储模式”和“类型”:

> x=as.name('y')
> x
y
> mode(x)
[1] "name"
> class(x)
[1] "name"

> typeof(x)
[1] "symbol"
> storage.mode(x)
[1] "symbol"