1
Scilab的版本是5.5.1。我见过一个问题人物手柄中的用户数据属性:Scilab:figure.user_data的元素大小不能更改
我定义中的用户数据为结构(见MWE在底部)
但是当我尝试存储变量来figure.user_data字段中,如果矢量大小已更改,则会引发错误(使用任何类型的矢量)
做到这一点user_data完美工作,因此解决方案可能是擦除figure.user_data值,然后定义新的用我的值结构化,然后用这个新值定义user_data。
但是,这并没有解决最初的问题。
下面,与figure.user_data矢量大小问题的MWE,错误引发
//
clc
clear
xdel(winsid())
strct = struct('int',0,'str','str','vstr',['a';'b'])
old_strct = strct
// changing vectors size in a struct works
strct.int = [0,1,2] // ok
strct.str = ['a';'b'] // ok
strct.vstr =['b','c'] // ok
strct.vstr =['a','b','c'] // ok
f=figure('visible','off')
f.user_data = old_strct // ok
// but changing it inside the user_data property doesn't
f.user_data.int = strct.int // see error below
f.user_data.str = strct.str // error
f.user_data.vstr = ['b';'c'] // ok as size is the same
f.user_data.vstr =['a','b','c'] // error
// we can still erase all the struct with a new one, though
f.user_data = strct //ok but not efficient to delete all the field to change one
!--error 15
Sub-matrix not well defined.
at line 45 of function generic_i_h called by :
at line 2 of function %s_i_h called by :
f.user_data.int = strct.int // error
at line 21 of exec file called by :
exec('/net/jabba/home0/pp607946/brouillon.sce', -1)
你说得对,他们修正了这个版本大于5.5.1的bug。在说到set的时候,手册给出了: “_这个例程可以用来修改图形实体或GUI对象的指定属性的值,在这种情况下,它相当于在句柄上使用点运算符。例如, set(h,“background”,5)相当于h.background = 5._“。这就是为什么我更喜欢这个点,它缩小了代码。 – PTRK
我知道它看起来更好,但它并不总是适合我。一旦我尝试使用点运算符创建一个学校项目的图形用户界面,它有时会工作,而其他人则不会。我不得不在所有地方都使用set()来使所有的东西都正常工作。 – luispauloml