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