Abstrakte Wikipedia/Funktionsauswerteraufruf

This page is a translated version of the page Abstract Wikipedia/Function evaluator call and the translation is 100% complete.

Abstrakte Wikipedia über Mailingliste Abstrakte Wikipedia auf IRC Wikifunctions auf Telegram Wikifunctions auf Mastodon Wikifunctions auf Twitter Wikifunctions auf Facebook Wikifunctions auf Youtube Website von Wikifunctions Translate

Dies ist ein Beispiel für einen Aufruf des Funktionsauswerter.

Beachte die Voraussetzung, dass nur der Funktionsorchestrator den Funktionsauswerter direkt aufrufen würde.

Das Ziel des Funktionsauswerters ist es, ohne Aufrufe anderer Datenquellen, Datenbanken oder Dienste arbeiten zu können.

Lies die Architekturskizze, wie Orchestrator und Auswertefunktion zusammenarbeiten.

{
 "type": "Function call",
 "function": {
  "type": "Function",
  "arguments": [
   {
    "type": "Argument declaration",
    "argument type": "Positive integer",
    "key id": "Z144K1",
    "label": {
     "type": "Multilingual text",
     "texts": [
      {
       "type": "Monolingual text",
       "language": "English",
       "text": "left"
      }
     ]
    }
   },
   {
    "type": "Argument declaration",
    "argument type": "Positive integer",
    "key id": "Z144K2",
    "label": {
     "type": "Multilingual text",
     "texts": [
      {
       "type": "Monolingual text",
       "language": "English",
       "text": "right"
      }
     ]
    }
   }
  ],
  "return type": "Positive integer",
  "testers": [],
  "implementation": [
   {
    "type": "implementation",
    "code": {
     "type": "Code",
     "language": "Javascript",
     "code": "Z144K0 = Z144K1 + Z144K2"
    }
   }
  ],
  "identity": "add"
 },
 "left": {
  "type": "Positive integer",
  "value": "2"
 },
 "right": {
  "type": "Positive integer",
  "value": "2"
 }
}
{
 "Z1K1": "Z7",
 "Z7K1": {
  "Z1K1": "Z8",
  "Z8K1": [
   {
    "Z1K1": "Z17",
    "Z17K1": "Z70",
    "Z17K2": "Z144K1",
    "Z17K3": {
     "Z1K1": "Z12",
     "Z12K1": [
      {
       "Z1K1": "Z11",
       "Z11K1": "Z251",
       "Z11K2": "left"
      }
     ]
    }
   },
   {
    "Z1K1": "Z17",
    "Z17K1": "Z70",
    "Z17K2": "Z144K2",
    "Z17K3": {
     "Z1K1": "Z12",
     "Z12K1": [
      {
       "Z1K1": "Z11",
       "Z11K1": "Z251",
       "Z11K2": "right"
      }
     ]
    }
   }
  ],
  "Z8K2": "Z70",
  "Z8K3": [],
  "Z8K4": [
   {
    "Z1K1": "Z14",
    "Z14K3": {
     "Z1K1": "Z16",
     "Z16K1": "Z301",
     "Z16K2": "Z144K0 = Z144K1 + Z144K2"
    }
   }
  ],
  "Z8K5": "Z144"
 },
 "Z144K1": {
  "Z1K1": "Z70",
  "Z70K1": "2"
 },
 "Z144K2": {
  "Z1K1": "Z70",
  "Z70K1": "2"
 }
}

Das Ergebnis sollte so aussehen:

{
 "type": "positive integer",
 "value": "4"
}
{
 "Z1K1": "Z70",
 "Z70K1": "4"
}
Top-Level-Architekturmodell von Wikifunctions.

Folgende Bedingungen müssen bei jedem Aufruf des Funktionsauswerters erfüllt sein:

  • es muss ein gültiges ZObjekt sein;
  • es muss vom Typ Z7/Funktionsaufruf sein;
  • die Z7K1/Funktion muss eine echte Z8/Funktion sein, nicht eine Referenz auf eine Z8/Funktion;
  • jeder Z17K1/Argumenttyp muss von einem Typ sein, der dem Funktionsauswerter bekannt ist;
  • der Z8K2/Rückgabetyp muss von einem Typ sein, der dem Funktionsauswerter bekannt ist;
  • die Z8K3/Tester müssen eine leere Liste sein;
  • die Z8K4/Implementierung muss eine Liste mit genau einem Element vom Typ Z14/Implementierung sein;
  • es darf nur der Z14K3/Codeschlüssel der Z14/Implementierung angegeben werden;
  • der Z14K3/Code muss auf einen Z16/Code zeigen, wobei Z16K1/Sprache Z301/Javascript ist (für den Funktionsauswerter in Javascript. Wir werden auch Funktionsauswerter in anderen Sprachen machen, und hier muss der Wert in der jeweiligen Sprache sein);
  • alle angegebenen Argumente müssen Literale sein (in diesem Fall die Werte von Z144K1/left und Z144K2/right).

Falls der Funktionsaufruf die angegebenen Invarianten nicht erfüllt (oder sonst etwas schief geht), wird ein Z5/Fehler zurückgegeben.

Siehe auch