Solidity第一次作业

目录

第一题

完成以下代码练习

第二题

先看代码

回答问题


第一题

完成以下代码练习

请写一个简单的智能合约 set 和 get,以自己学号后两位为代码 set get。意思是set自己的学号(后两位)get自己的学号(后两位)。

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

contract Test1 {
    uint8 id;
    
    function set(uint8 _id) public {
        id = _id;
    }
     
    function get() public view returns(uint8){
        return id;
    }
} 

第二题

先看代码

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

contract Test1 {

    string names = 'lyk';
    string name = unicode'罗永康';
    
    function change(string memory _name) public {
        name = _name;
    }
     
    function get() public view returns(string memory){
        return name;
    }
    
    function f(int _a) public pure returns(int){
        _a++;
        return _a;
    }

回答问题

1.并谈谈字符串赋值和定义要注意一些什么?

2.谈谈以上哪些函数会消耗gas,哪些函数不会消耗gas,为什么?

3.pure和view修饰的函数有什么区别?

答:

1.字符串是引用数据类型,当作为函数参数(入参和出参)的时候需要指明在memory内存

当字符串赋值为汉字的时候,需要用unicoode进行转码,因为ASCII无法表示汉字。一个汉字等于3个字节

2.以上change函数会消耗gas,因为修改了状态变量name,无法使用pure和view修饰符。get函数和f函数不会消耗gas,因为使用了pure和view修饰符

3.pure修饰的函数不读取状态变量也不修改状态变量,view只读取状态变量不修改状态变量。被pure和view修饰的函数都不消耗gas

你可能感兴趣的:(#,智能合约,智能合约)