2
removeClass("A")
setClass('A',representation=representation(a="numeric"))

setMethod('initialize','A', function(.Object,...,a){

.Object@a=a
.Object
})

好的到这里

removeClass("B")

setClass('B',representation=representation(b="numeric"),contains="A")

此代码在类“B”的定义上失败,我没有机会为“B”添加初始化方法,甚至没有创建任何对象

.local(.Object, ...) 中的错误:缺少参数“a”,没有默认值

如果我在 initialize.A 方法中为 a 参数添加默认值,它不会失败

谁能解释为什么?

4

1 回答 1

1

“为什么”是一个棘手的问题,答案是“因为”它是这样实现的。如果您要问需要做什么来避免这种情况,答案是(a)为a构造函数中的参数提供默认值或(b)避免使用初始化方法。这里有一些讨论。隐含的契约是new("A")成功的,

于 2013-08-28T14:37:41.617 回答