我有一个带有两个final字段的简单类,其中一个是存储数据的映射,另一个是调用时更新数据的step函数:
class Data
{
//for each name a list of observations
final Map<String,List<double>> _dataMap;
/**
* the update step
*/
final Step _updateStep;
Step
只是typedef
。
现在,我想要一个具有一个参数的构造函数:一个带有引用Map<...>
的函数并返回一个新的Step
。这对我来说似乎合情合理,更新程序需要引用地图来更新它。
为什么这个构造函数会失败?
Data(Step initializer(Map<String,List<double>> dataReferences))
: _dataMap = new Map(),
_updateStep = initializer(_dataMap);
错误是第二步
非法隐式访问接收者&#39;这个&#39 ;;
什么?这是怎么泄漏的?怎么解决?
答案 0 :(得分:6)
GünterZöchbauer已经解释了您的错误原因。
这是一种解决方法:
Data(Step initializer(Map<String,List<double>> dataReferences))
: this._internal(initializer, new Map());
Data._internal(initializer, map)
: _dataMap = map,
_updateStep = initializer(map);
答案 1 :(得分:3)
您正在阅读_dataMap
(initializer(_dataMap)
)。 _datamap
是this
的字段,它不是一个参数。您无法在构造函数初始值设定项中读取“this”中的字段,如错误消息所示。