Update 'Initialization'
parent
b01281431c
commit
ac645d78b0
56
Initialization.md
Normal file
56
Initialization.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
`set` phrases, data sections, and type and function return default values all
|
||||||
|
support value initialization. There are two types of initialization in ARF:
|
||||||
|
simple and complex.
|
||||||
|
|
||||||
|
Simple initialization is just a single argument that is sufficient for setting
|
||||||
|
the value of a simple thing such as an Int. However, objects and arrays require
|
||||||
|
more than that. This is where complex initialization comes in.
|
||||||
|
|
||||||
|
An indented block under a...
|
||||||
|
|
||||||
|
- Data section
|
||||||
|
- Type section
|
||||||
|
- Enum section member
|
||||||
|
- Objt section member
|
||||||
|
- Set phrase
|
||||||
|
- Function ouput declaration
|
||||||
|
|
||||||
|
... is to be treated as a complex initialization. There are two types of complex
|
||||||
|
initialization: object and array. Array initialization is simple, it is just a
|
||||||
|
list of values of the same type. The following array initializations are
|
||||||
|
syntactically and semantically valid:
|
||||||
|
|
||||||
|
```
|
||||||
|
set x:{Int 4}
|
||||||
|
3849 92348 93 -21
|
||||||
|
|
||||||
|
set y:{Int 5}
|
||||||
|
23 2
|
||||||
|
39 695 1
|
||||||
|
|
||||||
|
set z:{Int 5}
|
||||||
|
23
|
||||||
|
2
|
||||||
|
39
|
||||||
|
695
|
||||||
|
1
|
||||||
|
```
|
||||||
|
|
||||||
|
Object initializations allow setting the values for an entire object, including
|
||||||
|
its constituent parts:
|
||||||
|
|
||||||
|
```
|
||||||
|
set x:SomeObject
|
||||||
|
.someMember 5
|
||||||
|
.memberWithMembers
|
||||||
|
.bird0
|
||||||
|
.bird1
|
||||||
|
.arrayMember
|
||||||
|
9853 943850 2093 399
|
||||||
|
394 93
|
||||||
|
```
|
||||||
|
|
||||||
|
The parser is able to differentiate between the two because in an object
|
||||||
|
initialization block, every member is preceded by a dot. Object initialization
|
||||||
|
members may nest - they may have array initializations in them, or even other
|
||||||
|
object initializations.
|
Reference in New Issue
Block a user