门当户对一词出自于《西厢记》。“虽然不是门当户对,也强如陷于贼中”。这个词形容静态类型的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){
      
  	}
}

下面是本次实验所配套的视频教程: