Skip to content

functionBlocks

extrazi edited this page Jul 1, 2023 · 6 revisions
original    original
EN     PL

Manual   m4nfo

Bloki funkcji

wynik jest traktowany jako a.

Introduction
W m4nfo 'blok' stanowi korpus funkcji funkcji wykonawczej. Jako taki jest technicznie parametrem tej funkcji, najczęściej jedynym i ostatnim. Ale w przeciwieństwie do zwykłego parametru nie przypisuje wartości liczbowych, ciągów tekstowych ani funkcji, ale reprezentuje sekwencję kodu, wykonywaną warunkowo w zależności od tego, jak przepływ sterowania jest zmieniany przez wartość zwracaną przez funkcję wydajności osadzania. W ten sposób składa się z wielu odniesień (łańcuchowych do innych funkcji) lub wyników wywołania zwrotnego, z których każdy jest wybierany przez funkcję if() , oraz z jednej gałęzi else, bardzo podobnej do konstrukcji przełącznika/wielkości liter 'C'..
 Przykład (blok funkcyjny): 
 
 def(10) typecount(TOWN, 
          ref(9) if(0)
          ref(8) if(1)
          ref(7) if(2 .. 3)
          DISALLOW else
 )

W tym przykładzie jest jeden normalny parametr (TOWN), po którym następuje blok, podświetlony na żółto, jako drugi parametr funkcji wydajności. W bloku znajdują się trzy odwołania i jeden wynik wywołania zwrotnego (DISALLOW).

Każda linia kodu w bloku musi składać się z odwołania lub wyniku wywołania zwrotnego, po którym następuje funkcja if() lub etykieta else na końcu bloku.

W przypadku pustego bloku (tj. Braku funkcji if()) wynik funkcji jest traktowany jako wynik wywołania zwrotnego .

 if(<List>) 
Parametry funkcji if() mogą być mieszaną listą wartości zwracanych przez pojedynczą funkcję, zakresów wartości lub nieokreślonych zakresów oznaczonych liczbowym symbolem '<' lub '>' , patrz przykłady poniżej.
'Ewaluacja' Opis
if(1) test dla pojedynczej wartości zwracanej
if(1 .. 5) test dla zakresu zwracanych wartości
if(1,3, 5) test dla pojedynczych zwracanych wartości
if(0 .. 2, 7 .. 9) test dla zakresów zwracanych wartości
if(<20) test dla zakresu 0 .. 19 [*]
if(> 100) test dla zakresu 101 .. <maxval>[*]
if(0 .. 2,>100) test dla zakresu 0 .. 2 i 101 .. <maxval>
if(1,3,5, 7 .. 9, >300) test dla pojedynczych zwracanych wartości 1, 3, 5, zakresu 7 .. 9 i zakresu 201 .. <maxval>

[*] Minimalna wartość to zawsze 0, w m4nfo nie ma ujemnych wartości zwracanych. <maxval> to 0xFF (bajt), 0xFFFF (Word) lub 0xFFFFFFFF (DWord), w zależności od rozmiaru wartości zwracanej przez funkcję wydajności.

Clone this wiki locally