Přeskočit obsah

Schéma¤

Schémata v SP-Langu popisují typ a další vlastnosti polí v dynamicky typovaných kontejnerech, jako je JSON nebo pythonovské slovníky.

Je důležité poskytnout SP-Langu informace o typu, protože se používají jako vstup pro typovou inferenci, a tedy pro optimální výkon.

Definice schématu¤

Reprezentace schématu ve formátu YAML:

---
define:
  type: splang/schema

fields:
  field1:
    type: str
    aliases: ["FieldOne"]

  field2:
    type: ui64

Možnosti¤

Možnost type¤

Definuje datový typ daného atributu, například str, si64 a podobně. Další informace naleznete v typovém systému SP-Langu.

Tato volba je povinná.

Možnost aliases¤

Definuje aliasy polí pro daný atribut, které lze použít v deklaraci jako synonymní výraz.

Pokud má pole field1 alias pole s názvem FieldOne, jsou následující deklarace rovny, pokud je schéma správně definováno:

!GET
what: field1
from: !ARG input
!GET
what: FieldOne
from: !ARG input

Možnost unit¤

Definuje jednotku atributu, pokud je potřeba, například pro časové značky. V tomto případě může být jednotka auto pro automatickou detekci, sekundy a mikrosekundy.

Deklarace funkce (Python)¤

Příklad deklarace funkce SP-Lang, která používá MYSCHEMA.yaml:

splang.FunctionDeclaration(
    name="main",
    returns="bool",
    arguments={
        'myArgument': 'json<MYSCHEMA>'
    },
)

a samotný soubor MYSCHEMA.yaml:

---
define:
  type: splang/schema

fields:
  field1:
    type: str

  field2:
    type: ui64

In-place schémata¤

SP-Lang umožňuje specifikovat schéma přímo v kódu FunctionDeclaration jazyka Python:

splang.FunctionDeclaration(
    name="main",
    returns="bool",
    arguments={
        'myArgument': 'json<INPLACESCHEMA>'
    },
    schemas=[
        ("INPLACESCHEMA", {
            "field1": "str",
            "field2": "si32",
            "field3": "ui64",
        })
    ]
)

Provádí se pomocí tuple, první položka je název schématu, druhá je slovník s poli.