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