打開和關閉私有數據表為了保持我的許多腳本乾淨,我經常使用“私有”。 但是,如果我正在對腳本進行故障排除,將表設置為私有會妨礙我,我需要註釋掉並希望在我進行更改以查看更改是否有效時記得取消註釋。
有沒有辦法,或者 JMP 是否已經有了全局方法來打開或關閉私有表? 在我的腦海中,我可以花時間複製我的代碼,無論是否使用私有代碼,並將其綁定到測試變量,但這似乎不是最佳答案。
不確定是否有關於如何做到這一點的任何想法。 謝謝!
自動化和腳本回复:打開和關閉私有數據表太棒了,文斯! 這與我最終所做的類似,但在允許數據視圖雙向傳輸方面要優雅得多。
回复:打開和關閉私有數據表同意@Craige_Hales和@txnelson在那些點上。@雷塞爾,我通常選擇私有表的主要原因是當我有一個腳本可以對許多表進行更改/更新/等時。 如果它們單獨存在,它們會在用戶面前的屏幕上非常閃亮,因為窗口會出現、消失等。如果它們不可見,用戶可能會在窗口列表中看到很多活動,這也可能是分心。
大多數時候我選擇私有表,因為它們允許為用戶提供最乾淨的界面,只有必要的可視化步驟是可視化的。 根據表的數量和用戶的計算機,RAM 的好處也是整體速度的提高。
回复:打開和關閉私有數據表吉姆是對的;私有表沒有創建操作系統窗口結構,而不可見表有一個不顯示的窗口。 如果有 100 或 1000 個表,可能會節省少量的 CPU 和內存。
我唯一一次使用 private 是在我寫的時候文件捕捉器並希望應用程序安靜地運行,而不會干擾運行的任何其他 JSL 的 JSL 環境。 您基本上根本無法檢測到私有數據表。 它確實有一個有點侵入的列名。
回复:打開和關閉私有數據表內森,這有用嗎?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
privateTable = Function({bool,dt},{default local},
table_name = dt << Get Name;
If(!bool & !(dt << HasDataView), // no table but you want one
print("making "||table_name||" public");
dt << New Data View;
Return(dt);
, // elif
bool & dt << HasDataView, // you have a table but want it private
print("making "||table_name||" private");
dt_sub = dt << Subset( All rows, Selected columns only( 0 ), "private" );
close(dt, no save);
dt_sub << Set Name(table_name);
return(dt_sub);
, // else just return what's given
print("passthrough");
return(dt);
)
);
dt = privateTable(1, dt); // should make it private
wait(2);
dt = privateTable(1, dt); // should do nothing
wait(2);
dt = privateTable(0, dt); // should do make it visible
wait(2);
dt = privateTable(1, dt); // should do make it private again
回复:打開和關閉私有數據表節省 RAM 是好處。私有表不創建任何可見對象。如果所有這些對象可見,則必須將它們映射到內存。
回复:打開和關閉私有數據表使用私有表的具體好處是什麼? 節省內存?
回复:打開和關閉私有數據表是的! 這絕對在我的雷達上。 我有一個功能/實用程序庫,我手頭有很多東西(並分發),轉向自定義功能方面是許多動態功能的長期計劃。
回复:打開和關閉私有數據表如果您經常需要該功能,您可能會受益於創建自定義功能創建自定義函數、轉換和格式 (jmp.com) .這樣你也可以直接從腳本索引中看到自定義函數。
回复:打開和關閉私有數據表感謝大家! 我最終做了以下操作,雖然不是很理想,但應該工作得很好。 我創建了一個函數並在我的腳本頂部有一個變量來基本上打開/關閉私有
seePrivateTables = 1;
unprivatizeTable = Function({bool,tableName},{default local},
If(bool == 1,
tableName << New Data View;
Return(tableName)
,
Return(tableName)
)
);
// ... various code
dt1 = dt << Summary(.... , private);
dt1 = unprivatizeTable(seePrivateTables, dt1);只要我記得在創建新表時調用該函數,我就應該能夠批量打開和關閉私有表。
回复:打開和關閉私有數據表JMP 跟踪可見和不可見的表。 例如,您可以在主窗口中關注它們。 私有表僅由創建它們的代碼跟踪。 如果在覆蓋持有其句柄的 JSL 變量之前未能關閉私有表,則該表仍在內存中但無法訪問。 它會在 JMP 終止時關閉。 (Window->CloseAllDataTables 找不到私有表,不會關閉它們。)
我也很確定 JMP 不會公開將可見或不可見表變為私有的方法。 如果您有句柄,則可以將私有表變成不可見表,如下所示:
dtA = Open( "$SAMPLE_DATA/Big Class.jmp", private );
// getting the data box makes it invisible
b = dtA << New Data Box();
// then show window makes it visible
dtA << Show Window;
不幸的是,不可見的關鍵字是關鍵字並且不能作為變量傳遞,至少不能傳遞給 open()。 不確定子集等。可能您能做的最好的事情是添加對用戶函數的調用,該函數在您創建或打開表的每個點之後執行類似上述的操作。
回复:打開和關閉私有數據表您可以使用 << 新數據視圖使私有表可見。 我不是 100% 了解它在這種情況下的作用,但它似乎使私有表可見並且我已將其用於調試:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", private);
wait(2);
dt << New Data View;
不知道如何再次將其設為私有,但是 << Show Window(0);至少會使其不可見。
回复:打開和關閉私有數據表我不知道能夠打開和關閉 Private,因為它需要在內存中即時構建所有顯示對象。但是,您可以使用顯示窗口消息來顯示/隱藏普通或不可見的數據表。
data table("Daily Blood Pressure")<<SHOW window=""></SHOW>