Körkörös függésnél kivétel
Szép napot!
Nem feltétlen a js témakörbe tartozik, inkább algoritmusok témakör lenne a megfelelő, de mivel js-ben van, és nincs algoritmusok témakör, ezért ide tettem.Ez a kód azt csinálja, hogy megadok neki bizonyos kulcsokat, aztán ő a use-ból kiválogatja a kulcsoknak megfelelő teszteket, illetve azok függőségeit, és a végén visszatér egy listával, ami a teszteket tartalmazza függőségi sorban. (A use úgy néz ki, mint a requirejs shim.)
Két kérdésem van ezzel a kóddal kapcsolatban, az egyik, hogy minek nevezzem az yyyy példányváltozót, a másik, hogy hogyan lehetne a körkörös függést kivétellel elkaszálni?
Körkörös függést adó kód:Illetve a _ az underscore.js a kódban.
■ Nem feltétlen a js témakörbe tartozik, inkább algoritmusok témakör lenne a megfelelő, de mivel js-ben van, és nincs algoritmusok témakör, ezért ide tettem.
createYyyy: function (keys) {
this.added = {};
this.yyyy= [];
_.each(keys, this.addTest, this);
return this.yyyy;
},
addTest: function (key) {
if (_.has(this.added, key))
return;
if (!_.has(this.use, key))
throw new SyntaxError("Test " + key + " is not registered.");
_.each(this.use[key].deps, this.addTest, this);
this.added[key] = true;
this.yyyy.push(key);
}
Két kérdésem van ezzel a kóddal kapcsolatban, az egyik, hogy minek nevezzem az yyyy példányváltozót, a másik, hogy hogyan lehetne a körkörös függést kivétellel elkaszálni?
Körkörös függést adó kód:
this.use = {a:{deps:["a"]}};
...
Nyugodtan, számomra hasznos
Kérdés: miért SyntaxError-t dobsz?
Más nyelvben csinálnék egy
Error lista:
Creates an instance representing an error that occurs regarding the global function eval()
Creates an instance representing an error that occurs when a numeric variable or parameter is outside of its valid range
Creates an instance representing an error that occurs when de-referencing an invalid reference
Creates an instance representing a syntax error that occurs while parsing code in eval()
Creates an instance representing an error that occurs when a variable or parameter is not of a valid type
Creates an instance representing an error that occurs when encodeURI() or decodeURI() are passed invalid parameters
Következtetés:
Úgyhogy annyit tudnék tenni az ügyben, hogy simán Error-al szórom el, viszont akkor már inkább a SyntaxError-et válaszottam, mert valamilyen struktúra parsolása során keletkezett a hiba, annak ellenére, hogy nem eval-al parsolok...
var a = {}; var b =
laza :D
Azt hiszem nem fogok error típusokat használni, legalábbis ha a böngészők képtelenek kezelni őket, akkor nem látom értelmét. Volt tervben olyan, hogy elfogok egy hibaüzenetet, és hozzácsapok plusz információkat, de akkor lehet, hogy leteszek erről, és nem lesznek annyira részletesek a hibaüzeneteim...
Nekem első blikkre a
Amúgy ideje lenne valamit kezdeniük ezzel a JS-ben.
Nem tartom annyira fontosnak,
Információrejtés
Elsősorban a fejlesztő saját
Ez azt vizsgálja, hogy fa-e,
A valid függőségi gráfokat irányított aciklikus gráfnak (DAG) hívják, erre guglizva lehet egy csomó releváns algoritmust találni. A legegyszerűbb, ha csinálsz egy nem rekurzív mélységi bejárást, aminek a során nyilvántartod, mik az éppen nézett elem ősei; ha a gráfban van kör, akkor lesz olyan elem, ami az egyik ősére linkel.
Tévedsz, nem dob kivételt
Gyakorlatilag ugyanazt csinálja az én kódom is, mint amit te írsz, annyi extra van benne, hogy nézi azt is, hogy szerepelt e már valami, és ha igen, akkor nem adja hozzá újra a kimenethez.
SyntaxError
(valamikor általános iskolás koromban.)