Solidity版本中v0.5.0 与 v0.4.0 中 string的使用区别

简单存储合约记录笔记(2020-05-28):

pragma solidity ^0.5.7;
contract  JiaSimple {
    // 备注: 1、当前啥也不变化,将solidity编译版本修改为^0.4.0等版本兼容;2、若删除代码中的memory\storage标记,直接通过^0.4.0编译会报错。因为在5.0版本中要求string必须指定传递的标记类型(注意这两个标记的区别)。
    string _info;
     // memory 表示直接值传递,不改变原本内容。 此set方法: 将传递进来的内容赋值给_info。
     // 补充:若是storage传递则会改变原来传递的值,且当前函数只能是internal,private
    function set(string memory _input) public {
       _info = _input;
    }
    function get() public view returns(string memory){
        return _info;
    }
}

当前代码编译对应的abi:

[{“constant”:false,“inputs”:[{“name”:"_input",“type”:“string”}],“name”:“set”,“outputs”:[],“payable”:false,“stateMutability”:“nonpayable”,“type”:“function”},{“constant”:true,“inputs”:[],“name”:“get”,“outputs”:[{“name”:"",“type”:“string”}],“payable”:false,“stateMutability”:“view”,“type”:“function”}]

猜你喜欢

转载自blog.csdn.net/AllisonLi/article/details/106398039