《酬乐天扬州初逢席上见赠》有言“沉舟侧畔千帆过,病树前头万木春”。新旧更替预示着新生命的开始,任何的变更都是朝着时代的潮流涌动着的。Solidity语言的版本与语法更新迭代之快,像是一位不“安分”的小孩一样,令大多数编程者头疼。Constant的弃用也验证着它不断向更为精炼与规范的方向发展着。
实验目的
1.明白哪些属性可以被constant修饰。
2.了解constant的作用与作用范围。
3.知道constant的版本变动。
实验要求
1. 请按照注释1的要求补充代码,总结constant可修饰的类型范围
2. 请思考注释2,3的问题。思考完后,将注释去掉,然后编译检查结果。总结constant的作用与范围。
3. 调用getNum函数,思考其修饰函数的作用。然后将该合约版本pragma solidity ^0.4.0;改为pragma solidity ^0.5.0;,编译器也转到5版本进行编译,查看结果。按照报错提示,修改该函数,保持逻辑不变直至编译通过。
以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验
// SPDX-License-Identifier: GPL-3.0
pragma solidity^0.4.0;
contract cons{
//1.请尝试参照num用constant修饰int,string,bytes1数据类型并赋值。
uint public constant num = 50;
//**1**
//2.请思考changIt函数是否可以成功修改num的值?
function changeIt() public{
//num = 100;
}
//3.请思考方法体内部是否可声明constant?
function Inside()public{
//uint pubilc constant num2 = 50;
}
//4.请思考此时constant修饰函数时的作用是什么?
function getNum()public constant returns(uint){
return num;
}
}
下面是本次实验所配套的视频教程:
