Bagian aktif Syntax
10. Derived Values
Status dokumen: Normative
Derived value adalah nilai yang dihitung secara otomatis dari ekspresi, parameter, constant, atau query geometri. Derived value bersifat read-only - tidak dapat di-assign secara langsung oleh pengguna.
10.1 Syntax
derived:
panelWidth:
value: totalWidth - margin * 2
halfRadius:
value: outerRadius / 2
centerPt:
value: panel.center
Shorthand syntax juga didukung (tanpa value:):
derived:
panelWidth: totalWidth - margin * 2
10.2 Type Inference
Tipe hasil ditentukan dari hasil evaluasi ekspresi secara otomatis.
| Ekspresi | Tipe hasil |
|---|---|
diameter / 2 | length (jika diameter bertipe length) |
count * 1 | number |
panel.center | point |
length(outline) | scalar-length |
10.3 Dependency Rules
Derived value dapat bergantung pada:
parametersconstants- derived lain (selama tidak melingkar)
- anchor object (misal
panel.center,line1.length) - hasil query geometri (misal
length(path),distance(A, B))
Dependency melingkar tidak diperbolehkan dan akan menghasilkan error CIRCULAR_DEPENDENCY.
10.4 Usage
Derived value dapat digunakan di mana pun ekspresi diterima:
objects:
innerRect:
type: rect
size: [panelWidth, panelWidth]
place:
center: panel.center
10.5 Local Derived in Components
Dalam kontrak aktif v0.5, component juga boleh memiliki derived lokal.
Contoh:
components:
bracket:
parameters:
width:
type: length
thickness:
type: length
derived:
innerRadius: thickness * 1.5
holeOffset: width / 4
objects:
hole:
type: circle
center: [holeOffset, 0mm]
radius: innerRadius
Aturan minimum:
derivedlokal hanya dapat diakses di dalam component yang sama- ia dievaluasi setelah parameter component di-resolve
- ia boleh dipakai oleh object internal component
- ia juga boleh dipakai oleh
exportscomponent bila diperlukan - jika ada konflik nama dengan
derivedglobal, scope component memprioritaskanderivedlokal
Catatan:
derivedlokal tidak menjadi simbol global dokumen- perilaku read-only tetap sama seperti
derivedglobal