Solidity constant常量,view修饰函数,pure修饰函数

 

 

demo.sol(constant常量,view,pure):

pragma solidity ^0.4.20;


contract Test {
    
    // 一、constant介绍
    uint public v1 = 10;
    uint constant v2 = 10;
    
    string str1 = "hello!";
    string constant str2 = "test!";
    
    function f1() public {
        v1  = 20;
        // v2 = 30;  // ERROR,无法修改constant修饰的常量(值类型)
        
        str1 = "Hello!"; 
        // str2 = "Test!";   // ERROR,无法修改constant修饰的常量(string类型)
    }
    
    // 结构体类型(引用类型)
    struct Person {
        string name;
        uint age;
    }
    // Person constant p1;  // ERROR, constant仅可以修饰值类型,无法修饰引用类型(string除外)


    function f2() constant public {
        v1 = 50; // constant修饰的函数内,如果修改了状态变量,那么状态变量的值是无法改变的!!
        // 状态变量v1的值还是10,并未被修改。
    }


    // 二、view介绍
    // 1. view只可以修饰函数,不可以修饰变量。
    // 2. 它表明该函数内尽可以对storage类型的变量进行读取,无法修改。(类似constant修饰的函数)
    

    // 三、pure介绍
    // 1. pure只可以修饰函数。
    // 2. 它表明该函数内,无法读/写状态变量。
    function f3() pure public returns(uint){
        //return v1;  // ERROR, pure修饰的函数中无法修改也无法读取状态变量。
    }

}

 

你可能感兴趣的:(Solidity)