Ho creato una funzione JSL personalizzata e l'ho caricata nell'ambiente globale. Successivamente, nell'interfaccia di Graph Builder, ho utilizzato la funzionalità "Script personalizzato" per incorporare questa funzione nello script del grafico. Dopodiché, ho salvato lo script di Graph Builder nella tabella dati (come script di tabella).
Quando eseguo manualmente lo script Graph Builder dalla tabella dati (facendo clic sul pulsante script nella tabella), tutto funziona perfettamente: la funzione personalizzata viene riconosciuta e il grafico viene generato correttamente.
Tuttavia, quando provo a eseguire lo stesso script della tabella in modo programmatico utilizzando il Run Script() funzione (ad esempio, dt << Run Script("Graph Builder")), lo script fallisce perché non riesce a trovare la mia funzione personalizzata. Sembra che Run Script() esegue lo script in un contesto isolato che non ha accesso alla mia funzione definita globalmente.
names default to here(1);
dt=current data table();
dt<
<RUN script=""></RUN>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AggregateHare95_0-1781704169868.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="AggregateHare95_0-1781704169868.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="AggregateHare95_0-1781704169868.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="AggregateHare95_0-1781704169868.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/106823i91CFAE42C2887E25/AggregateHare95_0-1781704169868.png" role="button" title="AggregateHare95_0-1781704169868.png" alt="AggregateHare95_0-1781704169868.png" /></span></SPAN></SPAN></SPAN></P> <P class="ds-markdown-paragraph"><SPAN class="">Curiosamente, le funzioni JMP integrate vengono riconosciute correttamente, mentre la mia funzione definita dall'utente non lo è.</SPAN></P> <P class="ds-markdown-paragraph"><SPAN class="">Qualcun altro ha riscontrato questo comportamento? C'è un modo per farlo?<SPAN> </SPAN></SPAN><CODE>Run Script() Eseguire lo script della tabella nello stesso namespace globale in modo che la mia funzione personalizzata sia visibile? Qualsiasi soluzione alternativa o spiegazione sarebbe molto apprezzata.
Potresti anteporre :: (o global:) alla chiamata della tua funzione all'interno dello script della tabella per accedervi dallo spazio dei nomi globale. In alternativa, potresti considerare l'utilizzo di una nuova funzione personalizzata con spazio dei nomi denominato per la tua funzione e modificare di conseguenza lo script della tabella.
Grazie mille, amico! Sei un genio: una soluzione così semplice, e ha funzionato alla perfezione.