当我导入类定义时,我不清楚到底发生了什么。如以下代码片段所示,一开始我的环境中没有一个名为“Wave”的类。然后我创建对象
wave
,之后定义的类“Wave”在我的控制台环境中可用。wave
不是类 "Wave" 的对象。它是什么?findClass()
之类的函数找不到“Wave”类。它“藏”在哪里?wave
到底是什么,因为它不是一个定义的类?
# verify "Wave" class doesn't exist
>> foo <- new("Wave")
Error in getClass(Class, where = topenv(parent.frame())) :
“Wave” is not a defined class
# this doesn't work
>> foo <- new("tunerR::Wave")
Error in getClass(Class, where = topenv(parent.frame())) :
“tunerR::Wave” is not a defined class
# this does work
>> wave <- tuneR::Wave
>>wave
standardGeneric for "Wave" defined from package "tuneR"
function (left, ...)
standardGeneric("Wave")
<bytecode: 0x7fbdc6c84020>
<environment: 0x7fbdc6c638a8>
Methods may be defined for arguments: left
Use showMethods(Wave) for currently available ones.
>>foo <- new("Wave")
class(foo)
[1] "Wave"
attr(,"package")
[1] "tuneR"
>>bar <- new('wave')
Error in getClass(Class, where = topenv(parent.frame())) :
“wave” is not a defined class
我不知道
tuneR
包,但看起来 tuneR::Wave
是 "Wave"
对象的构造函数。所以 wave
是同一构造函数的另一个副本。我不确定它是一个构造函数,打印它只是表明它是一个通用函数。但 wave
对象不是一个类,它是一个函数。
"Wave"
中还有一个名为tuneR
的类,S4类是对象,但我不认为该对象是类。