43 lines
1.3 KiB
Markdown
43 lines
1.3 KiB
Markdown
---
|
|
id: functions
|
|
title: Functions
|
|
---
|
|
|
|
## Defining a function
|
|
|
|
Body of a function consists of two parts, the first part (**`block {}`** or **`begin ... end`**) - normally consists of logic *(flow conditions, variable declarations, etc.)*, and the second part (**`with ...`**) usually defines the return value of your function.
|
|
|
|
<!--DOCUSAURUS_CODE_TABS-->
|
|
<!--Pascaligo-->
|
|
```Pascal
|
|
const availableSupply: nat = 15n;
|
|
const totalSupply: nat = 100n;
|
|
|
|
function calculatePrice(const available: nat; const total: nat): nat is
|
|
begin
|
|
const price: nat = total / available
|
|
end with price
|
|
|
|
const price: nat = calculatePrice(availableSupply, totalSupply);
|
|
```
|
|
|
|
<!--END_DOCUSAURUS_CODE_TABS-->
|
|
|
|
|
|
### Functions without an explicit body (shorter syntax)
|
|
|
|
A short hand syntax for the same function as above can inline the price calculation directly into the return statement.
|
|
While this approach can have it's benefits, it can decrease readability.
|
|
<!--DOCUSAURUS_CODE_TABS-->
|
|
<!--Pascaligo-->
|
|
```Pascal
|
|
const availableSupply: nat = 15n;
|
|
const totalSupply: nat = 100n;
|
|
|
|
function calculatePrice(const available: nat; const total: nat): nat is
|
|
block { skip } with total / available
|
|
|
|
const price: nat = calculatePrice(availableSupply, totalSupply);
|
|
```
|
|
|
|
<!--END_DOCUSAURUS_CODE_TABS--> |