在其他合约中有两种声明ERC20的方式:
IERC20 public token
,然后像token.transfer
一样连接到它;address public token
,然后像IERC20(token).transfer
一样连接到它。
这两种申报方式有什么区别吗?如果是这样,哪个更适合使用?
唯一的区别是在编译期间,如果您尝试使用一种类型而需要另一种类型,编译器会给您一个错误。
就运行时而言,它们都是(160位)以太坊地址。
在您的示例中,使用类型IERC20
更有意义,因为这是变量token
的预期类型。