《道德经》第二章第三句“是以圣人处无为之事,行不言之教。”Solidity中的自动生成getter函数就是这样的一位圣人,默默地为代码编写者实现getter的功能,使得代码更加简洁,方便。

实验目的

1. 明白Solidity中哪些情况会自动生成getter函数。

2. 了解默认自动生成的getter函数基本形式

实验要求

1.请依次编译与部署nonGetter,selfGetter,publicAutoGetter,autoGetterAndselfGetter四个合约。写出这四个合约的区别,并思考solidity在什么情况默认自动生成getter函数且getter函数的形式是怎样的?

2.编译与部署mappingNonGetter合约,你会发现没有mapping的返回值。请你根据第一个要求所得到的结果,用两种方式为mappinNonGetter合约完善代码,使得该合约部署后,执行test函数后,有方法可以调用mapping[1]中的值。

以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

contract nonGetter {
    string name = "nonGetter";
}

contract selfGetter {
    string name = "selfGetter";
    function  getter() external view returns(string memory){
        return name;
    }
}

contract publicAutoGetter{
    string public name = "publicAutoGetter";
}

contract autoGetterAndselfGetter {
    string  public name = "selfGetter";
    function  name1() external view returns(string memory){
        return name;
    }
}
contract mappingNonGetter{
    mapping(uint => string)map;
    function test() public {
        map[1] = "Jack";    
    }
}

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