区块链——Solidity智能合约基础实战(一)
区块链——Solidity智能合约基础实战(一)
Pure与View的差别
首先学会使用区块链solidity在线编译工具Remix
在线编译器地址:
注意:现阶段的任何时候,打开编译器的第一步就是写上头文件pragma solidity ^0.4.0;
编写HelloWorld
pragma solidity ^0.5.0;
contract HelloWorld{ string Myname = "马瑞鹏" ;
function getName() public view returns(string memory) { return Myname; } } |
在用Remix编译智能合约时,报错 TypeError: Data location must be "memory" for return parameter in function, but none was given.这是由于solidity 0.5.0版本的更新导致的,只需要在string后面加上memory就可以了。
由于视频中是^0.4.0所以我将编译器切换了版本号
并修改了代码:
pragma solidity ^0.4.0;
contract HelloWorld{ string Myname = "马瑞鹏" ;
function getName() public returns(string) { return Myname; }
} |
疑问1:为什么视频中用的view而我的编译器却报错呢?
版本号不同,暂时解决的方法是拿constant代替(通过调试,发现0.4.17~0.4.26之间都是可以的)
表示的solidity支持多返回值,合约部署后返回一个参数 0,表示的是第0个返回的参数
编写changeName方法:
function changeName(string _newName) public { Myname = _newName; } |
注意:调用此方法时输入的参数要用“ ”(英文的,不能是中文的)标识,不然的话调用此函数不生效,并且报错Json格式有异常
点击getName后,测试运行效果:
View和Pure的区别是是否消耗gas