There are 4 visibility types in Solidity

  • public - Publicly accessible function (Dapp users can call)
  • private - Can be called only inside the contract
  • internal - Only this contract and it’s childrens can call it
  • external - Only consumers can call. No other contract functions can call it.
function getMyName() public returns(string) {
    return myName;
}

We have got an error

:::warning TypeError: Data location must be “memory“ for return parameter in function

:::

Because we are not mutating the contract’s stored myName, we’ll return the copy of it from memory, which is where it’s stored by default.

Another warning

:::warning Warning: Function state mutability can be restricted to view

:::

We get this warning because our function is not mutating the state, it’s only reading from it. So we can use view modifier.

// version of solidity greater than 5
pragma solidity ^0.5.10;

// write a contract using contract keyword
contract HelloWorld {
    // data type string
    string myName = 'Ryan';

    // write a function that returns name
    function getMyName() public view returns(string memory) {
        return myName;
    }
}