取得圖例項目的問題在 JMP18 (18.1.1) 中,腳本索引中的此範例不起作用:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
item << Set Label( "Item " || Char( index ) )
);
它產生錯誤訊息:

所以, Legend Server << get legend items()
不傳回可編寫腳本的物件?
自動化和腳本編寫回覆:取得圖例項:沒有可編寫腳本的對象解決方法:
使用取得圖例項
不要忘記預先評估i以獲取圖例項目
- 對於設定標籤,不需要預先評估。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
Nitems = Nitems(( server << Get Legend Items)[1]);
for(i=1, i<= Nitems, i++,
Eval(Eval Expr(item = server << Get Legend Item(1, Expr(i))));
item << Set Label( "Item " || Char( i ) )
);
回覆:取得圖例項:沒有可編寫腳本的對象下一個陷阱:長條圖不起作用嗎?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb =Graph Builder(
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Bar( X, Y ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
show(items);
server << get legend item(1,1) // error message

編輯:我無法在另一台電腦上重現問題/重新啟動 JMP 後(?)。
回覆:取得圖例項:沒有可編寫腳本的對象它實際上確實傳回可編寫腳本的物件。看起來這是 For Each() 的錯誤。如果您將程式碼變更為等效的程式碼,它就會起作用。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
items[1][index] /*isn't this exactly what item is?*/ << Set Label( "Item " || Char( index ) )
);回覆:取得圖例項:沒有可編寫腳本的對象啊,抱歉,你是對的,各個專案確實是可以寫腳本的。
Interesting: a batch message like items << get label produces the same issue.
maybe batch messages use 對於每個 in the background ?
深入挖掘,我發現了一張舊票:TS-00128192
幸運的是,與此同時,這個問題得到了足夠的重視——在 JMP19 (EA5) 中它得到了修復:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;<BR /><BR />items << get label // same issue as with for each
show(items[1][1])
items[1][1] << get label(); // OK, on the lowest level, there <U>is</U> a scriptable object
Show(tmp = items[1][1::2]); // then this is a list of ...
tmp[1] << get Label(); // ...no
回覆:取得圖例項:沒有可編寫腳本的對象
@mmarchandFSLR寫道:
它實際上確實傳回可編寫腳本的物件。
另一方面......有點令人驚訝:

JMP19:
