containers - Octave containers.map 在成员函数中不起作用
问题描述
我有以下测试代码,它只是创建一个空的哈希图(containers.map)并在之后填充它:
hashtable = containers.Map('KeyType','char','ValueType','double');
hashtable('test') = 1.0;
只要我在我的“主”文件中使用它,一切正常......但是如果我将这两行复制到自创类的成员函数中,就会出现错误:
错误:找不到类:MyClassName
错误:调用自
myMemberFunction 在第 15 行第 31 列
第 15 行是“hashtable('test') = 1.0;”所在的行 站立。如果我删除这一行,一切都会再次正常。我绝对不明白,为什么会出现错误,它找不到我的班级......我测试了我的班级,一切正常。
我通过以下方式设置课程:
1:创建了一个名为:“@MyClassName”的文件夹
2:创建了一个名为:“MyClassName”的构造函数文件
3:添加了一个构造函数,命名为:“function obj = MyClassName(obj)”
4:创建了一个名为:“myMemberFunction”的成员函数文件
5:在这个文件中创建了一个成员函数:“function obj = myMemberFunction(obj)
如果此代码(哈希图)位于我的构造函数中,则它可以正常工作。仅当它位于我的成员函数第 15 行“hashtable('test') = 1.0;”内时 犯了错误。
解决方案
tl;博士 - 替换
hashtable('test') = 1.0;
和
subsasgn( hashtable, substruct( '()', {'test'} ), 1.0 );
不确定这是预期的行为,还是容器的副作用。 Map 是一个 classdef 定义的类,以及这是否是因为新旧样式类不能很好地相互配合。可能值得为此提交一个错误。但是,问题似乎是因为hashtable('test')
在方法内部没有按预期进行解析 - 可能不是有效地将其视为“引用”操作,而是将其视为函数调用?
为了完整起见,这里有一个 MVCE:
% @MyClassName/MyClassName.m
function obj = MyClassName(obj)
obj = struct('myfield', []);
obj = class(obj, 'MyClassName');
end
% @MyClassName/display.m
function display( Obj );
display( [inputname(1), '.myfield = '] );
display( get( Obj, 'myfield' ) );
end
% @MyClassName/get.m
function Out = get( Obj, Field )
Out = struct(Obj).(Field);
end
% @MyClassName/set.m
function Obj = set( Obj, Field, Val )
Obj = struct(Obj);
Obj.(Field) = Val;
Obj = class( Obj, 'MyClassName' );
end
% @MyClassName/myMemberFunction.m
function obj = myMemberFunction(obj)
hashtable = containers.Map('KeyType', 'char', 'ValueType', 'double');
subsasgn( hashtable, substruct( '()', {'test'} ), 1.0 );
obj = set( obj, 'myfield', hashtable );
end
在终端:
octave:1> a = MyClassName();
octave:2> a = myMemberFunction(a);
octave:3> a
a.myfield =
containers.Map object with properties:
Count : 1
KeyType : char
ValueType : double
推荐阅读
- python-3.x - 如何将 coreapi 客户端与 django rest 框架一起使用?
- java - 我有一个在 IE 中打开但不是在 chrome 中打开的 URL
- sql - 如果相似数据组中的一个值为空,则按分组并更改值
- c# - 使用 RemoteWebDriver 在 Firefox 68.0 和 Safari 12.1.1 中选择表格行时出现问题
- python - 如何从数据框的给定图像计算 JKRowling 的 text_reviews_counts 总数?
- loops - XSL 循环未在每个级别正确发生
- amazon-web-services - 几次成功请求后 Hadoop S3 驱动程序 403 错误
- ubuntu - Windows 7 上的 Oracle VM 虚拟机启动错误:lvmetad 尚未激活
- flask - 烧瓶对excel文件的响应给出损坏的excel文件
- r - 如何为大型数据集创建唯一向量