Ugrás a tartalomhoz

Tárátadó stílus

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

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]
  1. Essentials of Programming Languages, 4th, Boston, MA: MIT Press (2008. április 1.). ISBN 978-0262062794 
  2. 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.