Det är enkelt att inkludera en skriptfil i en annan med RKWard insticksprogram. Värden av det är omedelbart uppenbart om vissa delar av JS-koden är likadan mellan insticksprogram. Det går helt enkelt att definiera sådana delar i en separat .js
-fil och inkludera den i alla insticksprograms .js
-filer. Exempelvis så här:
// det här är en fil som heter "common_functions.js" function doCommonStuff () { // kanske hämta några alternativ, etc. // ... comment ("This is R code you want in several different plugins\n"); // ... }
// det här är en av de vanliga .js
filerna i ett insticksprogram
// inkludera common functions
include ("common_functions.js");
function calculate () {
// gör någonting
// ...
// infoga den gemensamma koden
doCommonStuff ();
}
Observera att det ibland är ännu mer användbart att vända på det, och definiera ”mallar” av funktionerna preprocess()
, calculate()
och printout()
i en gemensam fil, och låta dem anropa tillbaka för delarna som är olika mellan insticksprogram. Exempelvis:
// det här är en fil som heter "common_functions.js" function calculate () { // gör någonting som är samma i alla insticksprogram // ... // lägg till något som är olika mellan insticksprogram getSpecifics (); // ... }
// det här är en av de vanliga .js
filerna i ett insticksprogram
// inkludera common functions
include ("common_functions.js");
// observera: funktionen calculate() definieras inte här.
// den finns istället i common_functions.js.
function getSpecifics () {
// skriv ut någon R-kod
}
Ett problem som man måste vara medveten om när tekniken används är variabelräckvidd. Se JS-manualen om variabelräckvidd (variable scope).
Tekniken används flitigt i insticksprogrammen för fördelningsdiagram (distribution plot) och CLT-fördelningsdiagram (distribution CLT plot), så det kan vara värt att titta där för exempel.