Jump to content

Абстрактна Вікіпедія/Виклик обчислювача функції

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Function evaluator call and the translation is 100% complete.

Абстрактна Вікіпедія (список розсилки) Абстрактна Вікіпедія в ICR Вікіфункції в Телеграм Вікіфункції в Мастодоні Вікіфункції у Твіттері Вікіфункції у Фейсбук Вікіфункції у Ютубі Вебсайт Вікіфункцій Translate

Це приклад виклику обчислювача функції.

Зверніть увагу, що припущення полягає в тому, що лише оркестратор функцій буде викликати оцінювач функцій безпосередньо.‎

Мета оцінювача функцій полягає в тому, щоб мати можливість виконуватися без будь-яких викликів до інших джерел даних, баз даних або служб.‎

Зверніться до ескізу архітектури взаємодії оркестратора та оцінювача, що працюють разом.‎

{
 "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"
 }
}

Результат цього має бути:‎

{
 "type": "positive integer",
 "value": "4"
}
{
 "Z1K1": "Z70",
 "Z70K1": "4"
}
Архітектурна модель верхнього рівня Вікіфункцій.‎

Кожен виклик оцінювача функцій повинен виконувати такі умови:‎

  • це має бути дійсний ZObject;‎
  • це має бути звернення типу Z7/Function;‎
  • функція Z7K1/ повинна бути літералом Z8/Function, а не посиланням на Z8/Function;‎
  • кожен тип аргументу Z17K1/ повинен бути типу, відомого оцінювачу функцій;‎
  • тип повернення Z8K2/ повинен бути типу, відомого функції оцінювач;‎
  • Z8K3/тестери повинні бути порожнім списком;‎
  • Z8K4/реалізація повинна бути списком з рівно одним елементом типу Z14/Реалізація;‎
  • повинен бути вказаний лише ключ Z14K3/code Z14/Реалізація;‎
  • Z14K3/код повинен вказувати на Z16/Код, де Z16K1/мова є Z301/Javascript (для оцінювача функцій у Javascript. Ми також створимо оцінювачі функцій іншими мовами, і тут значення має бути відповідною мовою);‎
  • всі надані аргументи повинні бути літералами (у цьому випадку значення Z144K1/left та Z144K2/right).‎

У випадку, якщо виклик функції не відповідає заданим інваріантам (або щось інше піде не так), він поверне Z5/Помилка.‎

Див. також