more function docs
This commit is contained in:
parent
ec99d5c940
commit
5a2bfb8f3b
43
functions.md
43
functions.md
@ -13,8 +13,7 @@ could be assigned to a variable on the package using `def`, or by using the
|
|||||||
shortcut `defn`. The following two statements are equivalent:
|
shortcut `defn`. The following two statements are equivalent:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
(. def incr
|
||||||
(def incr
|
|
||||||
(. fn [x]
|
(. fn [x]
|
||||||
(: + x 1)))
|
(: + x 1)))
|
||||||
|
|
||||||
@ -22,6 +21,46 @@ shortcut `defn`. The following two statements are equivalent:
|
|||||||
(: + x 1))
|
(: + x 1))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Function returns
|
||||||
|
|
||||||
|
### Single returns
|
||||||
|
|
||||||
|
A function returns whatever the last expression in its execution returned. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
```
|
||||||
|
(. defn abs [x]
|
||||||
|
(. if (: >= x 0)
|
||||||
|
x
|
||||||
|
(: * -1 x)))
|
||||||
|
```
|
||||||
|
|
||||||
|
This function will return the argument `x` if it is greater than or equal to 0,
|
||||||
|
or `(* -1 x)` if it's not.
|
||||||
|
|
||||||
|
### Multiple returns
|
||||||
|
|
||||||
|
A function which wishes to return multiple arguments should return them as a
|
||||||
|
vector or list of arguments. The `let` function, which can be used to define
|
||||||
|
temporary variables in a scope, can deconstruct these multiple-returns:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Returns two numbers which sum up to 10
|
||||||
|
(. defn sum-10 []
|
||||||
|
[4 6])
|
||||||
|
|
||||||
|
(. let [[foo bar] (: sum-10)
|
||||||
|
(: fmt.Println "%d + %d = 10" foo bar))
|
||||||
|
```
|
||||||
|
|
||||||
|
Functions defined within a go library which return multiple values can also be
|
||||||
|
deconstructed in a `let` statement:
|
||||||
|
|
||||||
|
```
|
||||||
|
(. let [[conn err] (: net.Dial "tcp" "localhost:80")]
|
||||||
|
# do stuff)
|
||||||
|
```
|
||||||
|
|
||||||
## Variadic function
|
## Variadic function
|
||||||
|
|
||||||
Functions may take in any number of variables using the `...` syntax, similar to
|
Functions may take in any number of variables using the `...` syntax, similar to
|
||||||
|
Loading…
Reference in New Issue
Block a user