Back
Lesson 9:
 Functions
Introduction to Solidity functions and how to use it in your smart contracts.
Progress: 0%
Visit desktop version for better experiences.
Functions
Functions can be defined inside and outside of contracts. Functions take typed parameters as input.
To write or update a state variable you need to send a transaction.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
// Free function defined outside of a contract
// Always has implicit internal visibility
function freeFunction(uint a, uint b) pure returns (uint) {
    return a + b;
}
contract Simple {
    uint sum;
    // Function defined inside a contract
    // Takes two uint parameters as input
    function taker(uint a, uint b) public {
        sum = a + b;
    }
    // Function that returns multiple values
    // The names of return variables can be omitted
    function arithmetic(uint a, uint b)
        public
        pure
        returns (uint, uint)
    {
        return (a + b, a * b);
    }
    // Function that uses an early return
    // Must provide return values together with the return statement
    function earlyReturn(uint a, uint b)
        public
        pure
        returns (uint sum, uint product)
    {
        if (a == 0 || b == 0) {
            return (0, 0);
        }
        sum = a + b;
        product = a * b;
    }
}