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

R 为什么对象类型的名称与其所属类的名称不同?,r,oop,R,Oop,我目前正在阅读第337页的第9章,他说: 与此相反,类中存在一些固有的限制 contains=参数。此处提供的类必须是: 一种基本的R对象类型,但不是那些引用或非标准的类型;例如,不是“环境”或 “symbol”(类的对象类型“name”) 重点是我的 我天真的问题是,为什么对象类型的名称(symbol)与类名(name)不同?这与我对对象作为类实例的理解相冲突。还有其他类似的例子吗?我应该如何看待这里的命名约定?我认为这会阻止您构建或要求另一个间接层次。可以假设解释器能够处理“contain

我目前正在阅读第337页的第9章,他说:

与此相反,类中存在一些固有的限制
contains=
参数。此处提供的类必须是:


  • 一种基本的R对象类型,但不是那些引用或非标准的类型;例如,不是
    “环境”
    “symbol”
    (类的对象类型
    “name”
  • 重点是我的


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

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

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


    谢谢,虽然那不是我的问题。这句话只是为了让我的怀疑摆在原地。我想知道为什么对象和类没有相同的名称。也许阅读
    ?typeof
    会有所帮助。(对象和类永远不会相同。类是对象的属性。)如果在标准OOP意义下定义,则对象类型和类应该相同。然而,我猜对象类型在R术语中是指某种特定的东西,即C存储和实现。R不是一种“标准OOP”语言。根据我们的电子邮件交流,我不完全相信这个术语背后有充分的理由;)但我认为这是正确的。
    > x=as.name('y')
    > x
    y
    > mode(x)
    [1] "name"
    > class(x)
    [1] "name"
    
    > typeof(x)
    [1] "symbol"
    > storage.mode(x)
    [1] "symbol"