Skip to content

Commit

Permalink
Merge pull request bonsai-rx#115 from bonsai-rx/data-object-notes
Browse files Browse the repository at this point in the history
Add technical note and caveats of data objects
  • Loading branch information
glopesdev authored Jan 30, 2025
2 parents 84a9724 + c0a3be3 commit 33c54a2
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion articles/scripting-expressions-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,13 @@ new(
)
```

The example above projects the two unnamed items of a tuple into a new data object with an `X` and a `Y` property.
The example above projects the two unnamed items of a tuple into a new data object with an `X` and a `Y` property.

> [!Tip]
> Dynamic data classes are most useful when combined with operators which leverage the named structure of input types, e.g. [`CsvWriter`](xref:Bonsai.IO.CsvWriter) maps the type properties to header names. They are also useful to increase readability by naming the members of otherwise anonymous tuples, such as those generated by [`Zip`](xref:Bonsai.Reactive.Zip) and other combinators.
> [!Note]
> Dynamic data classes are uniquely identified by their specification. If two data object initializers use matching property names with identical types declared in the same order, then the two expressions will be resolved to the same data object type. This allows type inference to work on reactive operators which require matching types in all the input sequences, e.g. [`Merge`](xref:Bonsai.Reactive.Merge).
> [!Warning]
> Dynamic data classes do not have a predictable type signature and therefore cannot currently be serialized in the workflow file, nor be used in custom scripting extensions.

0 comments on commit 33c54a2

Please sign in to comment.