zoukankan      html  css  js  c++  java
  • 61、solidity编程语言类型-2——2020年07月12日12:26:21

    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();
            }
            
        
    }
    
    image-20191011153356103

    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

  • 相关阅读:
    分布式存储-Redis&常用数据库(Profile)
    高并发(outline&factors)
    高可用&高并发(从架构&代码层面出发)
    消息中间件-RabbitMq(可靠性方案&死信队列&监控)
    消息中间件-RabbitMq(高可用方案&集群搭建)
    消息中间件-RabbitMq(搭建&消息分发)
    消息中间件-介绍
    cmake多目录构建项目
    cmake单目录构建项目
    cmake安装
  • 原文地址:https://www.cnblogs.com/oneapple/p/13287977.html
Copyright © 2011-2022 走看看