【提问】external的函数有什么特点,什么情况下需要用到?

function set(string msg) external {       
}

external的函数有什么特点,什么情况下需要用到?

external函数是不可以被合约内部调用,专门给外部调用的函数。比如说得到合约内部的一些变量的值,你需要定义一个函数给外部调用,那么就明确指出来这是给外部调用的函数,内部不需要,这时就需要加上external。
例子:

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view return (uint256);
    ...
}