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参数添加默认值,则不会失败任何人都可以解释原因吗?
答案 0 :(得分:1)
“为什么”是一个棘手的问题,答案是“因为”它是以这种方式实现的。如果您正在询问需要做些什么来避免这种情况,那么答案是:(a)为构造函数中的参数a
提供默认值,或者(b)避免使用initialize方法。有一些讨论here。隐式契约是new("A")
成功,