Tárátadó stílus
A tárátadó stílus egy programozási módszer, amit változó állapot nélkül változó állapot modellezésére használnak.[1][2]
Példaként tekintsük ezt a JavaScript programot, ami nem tárátadó stílusban készült:
var lastWasA = false
// a treebin represents a binary tree of strings.
// a treebin is either
// - a string, or
// - {l : <treebin>, r: <treebin>}
// does an in-order traversal of this tree's
// leaves contain an 'a' followed by a 'b'?
function aThenB(treebin) {
if (typeof(treebin) === "string") {
if (treebin === "a") {
lastWasA = true;
return false;
} else if (treebin === "b") {
if (lastWasA) {
return true;
}
} else {
return false;
}
} else { // not a string, must be an internal node:
return ((aThenB(treebin.l))||(aThenB(treebin.r)));
}
}
Ez hivatkozást tartalmaz egy globális változóra. Tárátadó stílusban a globális változó értéke minden hívásban átadódik, amit a következő hívás átvesz. Ez úgy nézhet ki, mint:
function aThenB(treebin, lastWasA) {
if (typeof(treebin) === "string") {
if (treebin === "a") {
return {result: false, lastWasA: true};
} else if (treebin === "b") {
if (lastWasA) {
return {result: true, lastWasA: false};
}
} else {
return {result: false, lastWasA: false};
}
} else { // not a string, must be an internal node:
var leftCall = aThenB(treebin.l, lastWasA);
if (leftCall.result) {
return {result: true, lastWasA: false}
} else {
return aThenB(treebin.r, leftCall.lastWasA);
}
}
}
Jegyezzük meg, hogy minden hívás átvesz egy extra argumentumot, és két értéket ad vissza: a valódi visszatérési értéket, és a korábbi változó új állapotát.
Tárátadó stílusban írni nehézkes lehet, de segíthet kiküszöbölni versenyhelyzeteket azzal, hogy az állapot csak két függvényhívás között létezik, így a kód potenciálisan jobban párhuzamosítható.
Jegyzetek
[szerkesztés]- ↑ Essentials of Programming Languages, 4th, Boston, MA: MIT Press (2008. április 1.). ISBN 978-0262062794
- ↑ Programming Languages, Application and Interpretation, Second, self-published (2012. november 1.). Hozzáférés ideje: 2016. február 10.
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a Store-passing style című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.