首页 > 编程语言 > 详细

61、solidity编程语言类型——2020年07月12日12:26:21

时间:2020-07-12 13:48:47      阅读:54      评论:0      收藏:0      [点我收藏+]

2019年09月26日11:17:55

solidity编程语言类型-2——2020年07月12日12:32:20

编译网址

编译网址:

http://remix.ethereum.org/#optimize=false&evmVersion=null&version=soljson-v0.4.24+commit.e67f0147.js

1.整形

uint 无符号整型 只能表示正数

int和js中的number类似

2.地址

以太坊的地址

以太坊地址表示的字符串“0x3211B6a9fc5ea8bEf649bb617E3123a5755A0aC1”大概42位,以太坊一直是20个字节,一个字节8位,所以有160位

3.msg.sender

是合约里的全局变量,它是部署合约的地址。

  1. balance 查看余额

  2. transfer 转账

      address owner;
      //谁部署合约,这个地址就是谁
      owener=msg.sender;
    

4.数组

  uint [5] arr=[1,1,1,1,1];
  for(uint i=0;i<arr.length;i++){
 
  }
  arr.push(6);
  

5.map

  mapping(string=>uint) users;
  //{woniu:18}
  users["woniu"]=18;

6.结构体struct

  Struct Student{
  	uint age;
  	uint id;
  	string name;
  	uint phone;
  }
	 woniu=Student(18,141001,"xiaoye",151611895417);

7.枚举

enum sex{male,female};

8.public private

public共有的,合约内外都能调用;

private为私有的,只有合约内部可以调用。

也可以修饰状态变量;

状态变量默认是私有的;

pragma solidity ^0.4.24;

contract Test{
    
        uint public a=256;
        int public b=254;
        
        function add() private view returns(uint){
            return a + uint(b);
        }
        
        function ADD() public view returns(uint){
            return add();
        }
        
    
}
技术分享图片

9.pure view constant

如果?个函数??,访问了状态变量,但是没有修改,我们使?view或者constant修饰。

  1. 如果访问了状态变量,?且修改了,那么就不能constant和view,否则会报错,不修饰即可。

  2. 如果没有使?过状态变量,我们要修饰为pure。

  3. 如果你修饰为constant,但是你在函数中修改了,效果是:不会报错,正常执?,但是值不会改

变。

pragma solidity ^0.4.24;

contract Test{
    
        uint public a=256;
        int public b=254;
        uint private c=1000;
        
        function add() private view returns(uint){
            return a + uint(b);
        }
        
        function ADD() public view returns(uint){
            return add()+c;
        }
        
         function returnString() public pure returns(string){
            return "hello";
        }
        
    
}

10.address 匿名函数

pragma solidity ^0.4.24;

contract Test{
    
    //以太坊地址的?长度,?? 20个字节 ,20 * 8 = 160位 ,所以可以??个 uint160 编码。
    //地址是所 有合约的基础,所有的合约都会继承地址对象,通过合约的地址串,调?合约内的函数。
    
    //可以进?加减,需要强制转换 
    
    //1. 匿名函数:没有函数名,没有参数,没有返回值的函数,就是匿名函数 
    //2. 当调??个不存在的?法时,合约会默认的去调?匿名函数 
    //3. 匿名函数?般?来给合约转账,因为费?低


        string public str;
        address public addr1=0x00CA35b7d915458EF540aDe6068dFe2F44E8fa733c;
        
        function () public payable{
            
            
        }
        
        function add() public view returns(uint160) {
        return uint160(addr1) + 10;
        }
        
        function getBalance1() public view returns(uint256){
            return this.balance;
        }
        
         function getBalance() public view returns(uint256){
            return addr1.balance;
        }
    
}

11.transfer

//1. 转账的时候单位是wei 
//2. 1 ether = 10 ^18 wei (10的18次?) 
//3. 向谁转钱,就?谁调?tranfer函数 
//4. 花费的是合约的钱 
//5. 如果?额不?,transfer函数会抛出异常
            
//send转账与tranfer使??式?致,但是如果转账?额不?,不会抛出异常,?是会返 回false   
                
        //由合约向addr1 转账10以太币 
        function transfer() public {
            addr1.transfer(10 * 10 **18);
            }  

END

61、solidity编程语言类型——2020年07月12日12:26:21

原文:https://www.cnblogs.com/oneapple/p/13287977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!