# Solidity学习之constructor

By [林夕云](https://paragraph.com/@0xa91ccaeb1206a1fe86c00801555afa1d79fbdd52) · 2022-03-07

---

重点只有一句话：**构造器的作用在于统一的对合约的字段进行初始化**

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.10;
    
    //最终_id值为1
    contract Order{
        uint public _id;
    
        constructor(uint id){  //id传入1
            _id = id;
        }
    }
    

**构造器的作用在于统一的对合约的字段进行初始化**，如上述例子，在部署合约时，传入数字1，合约的id字段被初始化为1。

那么如果\_id在声明时就有初始值，那么以初始值为准，还是以构造函数里的赋值为准呢？只需要记住一点，**构造器的作用在于统一的对合约的字段进行初始化**，即先有初始化字段，后有构造器赋值。

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.10;
    
    //最终_id值为4
    contract Order{
        uint public _id=3;
    
        //id=4 when deploy
        constructor(uint id){  //id传入4
            _id = id;
        }
    }

---

*Originally published on [林夕云](https://paragraph.com/@0xa91ccaeb1206a1fe86c00801555afa1d79fbdd52/solidity-constructor)*
