Icon HelpCircleForumIcon Link

⌘K

Icon HelpCircleForumIcon Link

Icon LinkFunctions

Examples of functions in Sway

contract;
 
// Functions
// - Internal and external functions
// - ref mut
// - Return multiple outputs
 
abi MyContract {
    fn test_func() -> (u64, bool);
}
 
fn eq(x: u64, y: u64) -> bool {
    x == y
}
 
fn inc(ref mut num: u64) {
    num += 1;
}
 
fn swap_mut(ref mut pair: (u64, u64)) {
    let tmp = pair.0;
    pair.0 = pair.1;
    pair.1 = tmp;
}
 
fn swap(x: u64, y: u64) -> (u64, u64) {
    (y, x)
}
 
impl MyContract for Contract {
    fn test_func() -> (u64, bool) {
        assert(eq(11, 11));
        assert(!eq(11, 12));
 
        let mut num: u64 = 123;
        inc(num);
        assert(num == 123 + 1);
 
        let mut pair = (12, 13);
        swap_mut(pair);
        assert(pair.0 == 13);
        assert(pair.1 == 12);
 
        let x = 1;
        let y = 2;
        let (y, x) = swap(x, y);
        assert(y == 1);
        assert(x == 2);
        (123, true)
    }
}