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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值