Hodnota typu object! reprezentuje pojmenovaný nebo nepojmenovaný kontext (kontejner ve formě bloku), který obsahuje páry word: value. Typ object! je členem typesetů any-object! a default!
Objekty se vytvářejí při runtime použitím konstruktoru make nebo použitím funkcí context, object a contruct.
Idiom make object! vytváří nový objekt, vyhodnocujíce blok specifikací.
Funkce context a object invokují idiom make object!.
Použití funkce make:
>> foo: make object! [x: "bar" y: "baz"]
== make object! [
x: "bar"
y: "baz" ]
>> foo: make object! [x: "bar" y: ()] ; blok specifikací je vyhodnocován
*** Script Error: y: needs a value
*** Where: y
*** Stack:Použití funkce context:
>> foo: context [x: "bar" y: "baz"]
== make object! [
x: "bar"
y: "baz" ]
>> foo: context [x: "bar" y: ()] ; spec block is evaluated
*** Script Error: y: needs a value
*** Where: y
*** Stack: contextPoužití funkce object:
>> foo: object [x: "bar" y: "baz"]
== make object! [
x: "bar"
y: "baz" ]
>> foo: object [x: "bar" y: ()] ; spec block is evaluated
*** Script Error: y: needs a value
*** Where: y
*** Stack: objectJe-li argumentem funkce make hodnota typu object!, vytvoří se nový objekt se zadaným argumentem coby prototypem.
>> foo: make object! [x: "bar" y: "baz"]
== make object! [
x: "bar"
y: "baz"
]
>> bar: make foo [z: 42]
== make object! [
x: "bar"
y: "baz"
z: 42
]Funkce construct vytváří objekt bez vyhodnocení bloku specifikací:
>> foo: construct [x: "bar" y: ()]
== make object! [
x: "bar"
y: ()
]Je-li funkce construct použita s upřesněním /with, vytvoří se nový objekt který je rozšířením zadané hodnoty typu object!:
>> zar: construct/with [z: 42] foo
== make object! [
x: "bar"
y: ()
z: 42
]Výše uvedené způsoby vytvoření objektu lze schematicky vyjádřit takto:
<object> ::= make object! <object-spec> | object <object-spec> | context <object-spec>
make <object> <object-spec>
<object-spec> ::= <block>
<object> ::= <název existujícího objektu>Na hodnotu typu object! lze aplikovat všechny komparátory: =, ==, <>, >, <, >=, <=, =?.
Funkcí object? ověříme, zda je zadaná hodnota typu object!.
>> object? foo
== trueFunkce type? vrací datový typ zadané hodnoty.
>> type? foo
== object!any-object?, class-of, context, distance?, dump-face, face?, fetch-help, foreach-face, get-scroller, help, help-string, layout, metrics?, object, object?, offset-to-caret, offset-to-char, overlap?, parse-func-spec, react, react?, request-font, rtd-layout, save, set-flag, set-focus, show, size-text, stop-reactor, unview, view