Update 'Functions and Methods'
parent
348574a51a
commit
1434f48e97
38
Functions-and-Methods.md
Normal file
38
Functions-and-Methods.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Functions are written like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
func ro someFunction
|
||||||
|
> input:Int
|
||||||
|
< output:Int:mut
|
||||||
|
---
|
||||||
|
somePhrase
|
||||||
|
```
|
||||||
|
|
||||||
|
The first part of the function's content is its inputs and outputs. A function
|
||||||
|
may have any number of these, and they act as local variables. Function inputs
|
||||||
|
must always be immutable, and function outputs must always be mutable.
|
||||||
|
|
||||||
|
The second part is the actual code of the function. It is separated from the
|
||||||
|
first part of the function with a separator token, and contains an indented
|
||||||
|
block of phrases.
|
||||||
|
|
||||||
|
To return data from a function, its outputs must be set as you would a normal
|
||||||
|
variable.
|
||||||
|
|
||||||
|
A function can be a method of an object if it lists the method receiver after
|
||||||
|
an @ symbol:
|
||||||
|
|
||||||
|
```
|
||||||
|
func ro setGreeting
|
||||||
|
@ greeter:{Greeter}
|
||||||
|
> greeting
|
||||||
|
---
|
||||||
|
set greeter.greeting greeting
|
||||||
|
```
|
||||||
|
|
||||||
|
Method receivers, like inputs, must be immutable. They also must be pointers.
|
||||||
|
It is important to note that if a pointer is immutable, the pointer cannot
|
||||||
|
"move", but the data it points to can still be altered.
|
||||||
|
|
||||||
|
Method receivers can be of any type defined in the same module except interface
|
||||||
|
types.
|
Reference in New Issue
Block a user