如何正确执行以下操作:
我有一个带有插槽parentSpectrum,childSpectra,名称的SpectraSet类(为了保持简单)
name是character()
parentSpectrum应包含ParentSpec类的一个对象(因此它的类型为ParentSpec)
childSpectra应该包含类ChildSpec的n个对象。但是我无法使它成为ChildSpec类型,因为向量只能包含原子类型。在这种情况下,最佳做法是什么?我可以将它作为list()并在有效性检查中键入检查,但还有什么更好的吗?
答案 0 :(得分:0)
以下是我过去提供的related anaswers。
通常最好重新考虑类设计,因此ChildSpec本质上是一个向量 - 最低限度,支持length()和子集[,[[。上面的问题消失了,设计与R的矢量化方向一致,可能常见的操作是有效的。
实现自己的类型检查列表(实际上是另一种选择)的替代方法是重用Biocdonductor的S4Vectors类
中的基础结构.X = setClass("X", representation(x="numeric"))
.XList = setClass("XList", contains="SimpleList",
prototype=prototype(elementType="X"))
并在行动中
> xl = .XList(listData=list(.X(x=1), .X(x=2)))
> xl
XList of length 2
> xl[[2]]
An object of class "X"
Slot "x":
[1] 2