Skip to content

Latest commit

 

History

History
101 lines (68 loc) · 2.12 KB

set-path.adoc

File metadata and controls

101 lines (68 loc) · 2.12 KB

Datový typ set-path!

1. Úvodem

Hodnota typu set-path! nastavuje "kontextuální odkaz" (kontext slova, index slotu v řadě nebo odkaz klíče v řadě nebo mapě).

Set-path! je subset těchto typesetů: any-block!, any-path!, series!

2. Literálová skladba

BNF:

<set-path-literal> ::= <path-literal>:

<path-literal> ::= <path-head>/<selector>
<path-head>    ::= <word-literal> | <path-literal>
<selector>     ::= <integer> | <word-literal> | :<word-literal> | <paren>

Parse:

set-path: [set-word! some selector]
selector: [#"/" [integer! | word! | get-word! | paren!]]

Datové typy pro path-head: set-word!, set-path!

Datové typy selektoru: integer!, word!, get-word!, paren!

3. Vytvoření při runtime

Hodnoty set-path! lze vytvořit při runtime konstruktorem make nebo konverzí to.

>> make set-path! [foo bar baz]
== foo/bar/baz:

Lze vytvořit prázdný set-path o velikosti, zadané celým číslem jako argument:

>> make set-path! 10
== :

Set-path se zde jeví jako název kontejneru. Hodnota celočíselného argumentu není závazná:

sp: make set-path! 2
== :
append sp [fok sok bok]
== fok/sok/bok
length? sp
== 3
type? sp
== set-path!

Konverze `to:

>> to set-path! "foo bar baz"
== foo/bar/baz:

4. Postup vyhodnocení

Objekt typu set-path! podléhá stejným pravidlům při vyhodnocení jako objekt typu path!. Dospěje-li proces k selektoru, vrací se bezprostředně následující hodnota kolektoru.

Není-li za selektorem žádná hodnota nebo vrací-li výraz sdělení unset, je vyvoláno chybové hlášení.

5. Testování hodnot

Funkcí set-path? ověříme, zda je zadaná hodnota typu set-path!.

>> set-path? first [foo/bar:]
== true

>> set-path? quote foo/bar:
== true

Funkce type? vrací datový typ zadané hodnoty.

>> type? first [foo/bar:]
== set-path!

>> type? quote foo/bar:
== set-path!

6. Předdefinovaná slova

Funkce: set-path?, to-set-path.