solidity概述

目录

一,变量

1.局部变量

2.状态变量

3.全局变量

二,可见修饰符

1.public

2.private

3.internal

4.external

三,函数 

1.理解

2.return和returns

3.view和pure

四,错误处理

五,事件

 六,变量的数据存储位置

1.memory和storage和calldata

七,solidity的数据类型

 1.字符串

(1)string不能用length方法求长度;但是bytes是可以的,所以要想知道string长度,我们可以先把他转化为bytes;

 (2)string是不能直接比较是否相等

(3)string不能直接拼接

2.枚举

3.数组

(1)定长数组应用

(2)不定长数组应用

(3)不定长二维数组

(4)定长二维数组 

八,结构体 

 九,字典

 10,其他基本同于市面上的大多数编程语言


一,变量

1.局部变量

  • 在函数内部声明
  • 不存储在链上

2.状态变量

  • 在函数外部声明
  • 状态变量是永远存储在链上的值

3.全局变量

  • 内置提供的有关于区块链的信息,如block,msg等

二,可见修饰符

1.public

所有合约和账号都可以调用

2.private

只有在定义该函数的合约可以调用(函数里面的)

3.internal

当前合约,或者继承该合约的,类似于java的protected关键字

4.external

只有其他合约或者账号可以调用,合约内的函数不能调用,除非用this

三,函数 

1.理解

函数是代码的可执行单元。函数通常在合约内部定义,但也可以在外部定义

2.return和returns

  • returns加在函数名后面,用于声明返回的变量类型以及变量名。
  • return用于函数主体当中,返回指定的变量。

3.view和pure

  • getter类型的函数可以被view或者pure修饰。
  • view 修饰符适用于只读地访问合约状态的函数,可以读取合约状态变量。
  • pure 修饰符适用于执行纯粹计算的函数,不涉及合约状态或区块链数据。
    // SPDX-License-Identifier: GPL-3.0
    pragma solidity >=0.8.0 <0.9.0 ;
    
    contract Function {
        string  public  name = 'xfy';
    
        function setName(string memory _name) public returns(string memory) {
            name = _name;
            //调用函数不能自执行
            return  printName(name);
    
        }
        function foo() public pure  returns(string memory){
            string memory str = 'hello';
            return  str;
        }
        function fzz() public view returns(string memory) {
            return name;
        }
        
    }
    function printName(string memory _name) pure returns(string memory) {
        return _name;
    
    }

    以上的代码中,foo函数不调用区块链上的状态函数name所以用pure就i够了,但是fzz函数读取了name所以用view,如果是修改的话,如setname函数,就声明都不写。

四,错误处理

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

contract Errordemo{
    uint public x = 100;
    function doAssert()  public  returns(uint){
        //assert(3>5);
        require(3>5);

        x = 200;
        return x;

    }
    
}

assert是先执行,一旦出错,又改回去了,改回去是消耗gas的。

require是先执行,如果错了,就会回滚,然后会退回gas修改所消耗的gas

(他后面还可以自定义错误信息,显示出来。)

五,事件

 六,变量的数据存储位置

1.memory和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值