知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
構造方法的定義是 contract 與 function 相同
pragma solidity ^0.4.18; contract MyContractByNetkiller { /* Constructor */ function MyContractByNetkiller() public{ } }
除了 f(2,3) 這樣傳遞參數,還可以使用類似字典或Map的方式 f({value: 2, key: 3});
pragma solidity ^0.4.0; contract C { function f(uint key, uint value) { // ... } function g() { // named arguments f({value: 2, key: 3}); } }
完整的例子
pragma solidity ^0.4.18; contract MyContractByNetkiller { /* Constructor */ string name; int num; function MyContractByNetkiller() public{ name = "default"; num = 1; } function setName(string _name) public{ name = _name; } function getName() public view returns(string){ return name; } function setNum(int n) public{ num = n; } function addNum(int m) public view returns(int res){ res = m + num; } }
modifier 可以理解為 function 的觸發器,或者理解為 hook。執行 function的時候會首先運行 modifier
_; 表示執行 modifier 完成所有命令後,繼續運行 function 內的邏輯。
pragma solidity ^0.4.11; contract owned { function owned() { owner = msg.sender; } address owner; uint price; mapping (address => bool) registeredAddresses; modifier onlyOwner { require(msg.sender == owner); _; } function changePrice(uint _price) onlyOwner { price = _price; } function close() onlyOwner { selfdestruct(owner); } }