今日来介绍 function 的语法结构
function 里面有三个很特别的保留字分别是 pure
、view
、payable
,先看下面的简单说明
它的用途是,如果该函式不会修改任何的状态,就是用 pure
用前两天的例子来展示
contract test {
struct Member {
string name;
string addr;
}
Member member;
function setMember() public {
member = Member('syhlion', 'Taiwan');
}
//它并没有对任何状态做改变
function getAddress() public view returns (string memory) {
return member.addr;
}
}
当函式不读取,不异动状态就会用 pure
,用上面的例子来说,它有用到 member.addr
,所以它有读取到状态,必须使用 view
j
// 这种完全没有使用合约状态的 fucntion 才能使用 pure
function plus(unint a,uint b) public pure returns(uint){
return a+b
}
需要接收 ether
的 function
都需要标注上 payable
function get(username) public payable{
}
一般语言里面对 fucntion
,也会有可视(visibility)的包留字,solidity 也不例外,有 public
、private
、internal
、external
跟一般语言一样,就是一个可以公开给大家呼叫的函式
大致上跟 public
一样,但会有一个小缺点,自己合约内要调用这种宣告的 function
,会需要使用 this.f()
就是私有函式,只能被自己合约所调用,也不会被继承合约调用。
跟 private
很类似,但是可以如果被别人继承合约,是能够调用父层的 function
。
>>: Angular 深入浅出三十天:表单与测试 Day01 - 前言
深度优先搜寻(Depth-First Search,DFS)与广度优先搜寻(Breadth-Firs...
今天来看看一个常见问题。 { first_name: 'chris', last_name: 'wa...
「将127.0.0.1改成内网IP」,这是上一篇的某个步骤,没浅浅扒一下网路基础,对学习有点影响~~...
今天要把用指令传进来的资料写进DB完成注册,首先我们要在DB中创建一张Users的表 CREATE ...
GooseMod主要管理两个功能: 主题 套件 套件我看了一下觉得目前没有我喜欢的所以就不多作介绍 ...