Sto creando un linguaggio di scripting prototipo simile a qualcosa di simile a Javascript. Nella mia lingua, ogni singolo riferimento a una variabile è in realtà una chiamata di funzione (una funzione getter), che abbia parentesi o meno. Ad esempio, se fai questo:
var foo = 3;
var bar = foo;
Ciò che realmente accade è che foo.set () viene chiamato sulla prima riga, che crea una nuova funzione getter. Nella seconda riga, viene chiamata la funzione getter appena creata per foo, che assomiglia a questo:
foo.get()
{
return 3;
}
Posso anche assegnare una funzione a una variabile, nel qual caso quella funzione DIVENTA la funzione getter.
var foo =
{
return 4+5;
}
var bar = foo; // bar is now equal to the number 9, NOT the function that foo contains
Quindi quello su cui sto lavorando ora è quello che dovrebbe restituire una serie di funzioni. Ad esempio:
function func1
{
return 1;
}
function func2
{
return 2;
}
var foo = new array();
foo.push(func1);
foo.push(func2);
var bar = foo; //what does bar contain? [func1, func2] or [1, 2]?
Un riferimento a una singola funzione esegue quella funzione e restituisce la funzione. Quindi sto cercando di decidere se un riferimento a una serie di funzioni dovrebbe anche eseguire quelle funzioni, o se sarebbe più vantaggioso restituire semplicemente l'array di funzioni.
In altre parole, la funzione getter per foo dovrebbe essere simile a questa:
foo.get()
{
return [func1.reference, func2.reference]; //would return [func1, func2]
}
O come questo:
foo.get()
{
return [func1(), func2()]; //would return [1, 2]
}
In particolare, sto chiedendo se qualcuno sa se ci sono problemi o soluzioni che un metodo o l'altro creerebbe? Esistono regole stabilite per una buona progettazione del linguaggio di programmazione che si applicano qui?