门当户对一词出自于《西厢记》。“虽然不是门当户对,也强如陷于贼中”。这个词形容静态类型的Solidity尤为贴切,特别是数组的字面量。在Solidity中,数组returns返回参数的类型与return返回值的类型就是这样的关系,如果“三观,学识,认知”不一致的话,是很难在一起的。
实验目的
1. 了解数组默认返回的字面量类型
2. 知道如何改变数组字面量类型
实验要求
1. 查看getArrayLiterals,getArraryLiterals2,getArraryLiterals3函数,思考这三个函数return的值的类型分别是什么,又是根据什么决定的?如何正确修改returns的返回参数类型,使之编译正常通过?
2. 请参考函数getArrayLiterals3,修改函数getArrayLiterals4的方法体,使之编译正常通过。
3. 根据最后一个注释要求,补充方法体,实现遍历所有输入的数组元素并求和。
以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract ArrayLiterals{
//请你根据报错提示,修改returns返回参数的类型
function getArrayLiterals() public view returns(uint[3] memory){
return [1,2,3];
}
//请你根据报错提示,修改returns返回参数的类型
function getArrayLiterals2() public view returns(uint[3] memory){
return [256,2,3]; //报错
}
//请你根据报错提示,修改returns返回参数的类型
function getArrayLiterals3() public view returns(uint16[3] memory){
return [uint(1),2,3];
}
//请参考函数getArrayLiterals3,修改return返回值的类型
function getArrayLiterals4() public view returns(uint[3] memory){
return [256,2,3];
}
//补充方法体,实现遍历输入的数组元素并求和
function getArrayLiterals5(uint[3] memory grade) public view returns(uint){
}
}
下面是本次实验所配套的视频教程:
