Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

8.8. 函数

8.8.1. 构造方法

构造方法的定义是 contract 与 function 相同

				
pragma solidity ^0.4.18;

contract MyContractByNetkiller {
    /* Constructor */

    function MyContractByNetkiller() public{

    }
}
				
			

8.8.2. 定义函数

没有返回值

				
	function setName(string _name) public{
        name = _name;
    }			
				
			

8.8.3. 函数返回值

有返回值

				
	function getName() public view returns(string){
        return name;
    }
				
			

8.8.4. 参数传递

除了 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});
    }
}				
				
			

8.8.5. 函数的例子

完整的例子

				
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;
    }
}
				
			

8.8.6. Fallback function

				
				
				
			

8.8.7. modifier

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);  
    }  
}