[区块链&DAPP介绍 Day8] Solidity 教学 - functions

今日来介绍 function 的语法结构

function 里面有三个很特别的保留字分别是 pureviewpayable,先看下面的简单说明

function 修饰词

pure

它的用途是,如果该函式不会修改任何的状态,就是用 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

当函式不读取,不异动状态就会用 pure,用上面的例子来说,它有用到 member.addr,所以它有读取到状态,必须使用 view
j

// 这种完全没有使用合约状态的 fucntion 才能使用 pure
function  plus(unint a,uint b) public pure returns(uint){
    return a+b
}

payable

需要接收 etherfunction 都需要标注上 payable

    function get(username) public payable{
    }

function 可视词

一般语言里面对 fucntion,也会有可视(visibility)的包留字,solidity 也不例外,有 publicprivateinternalexternal

public

跟一般语言一样,就是一个可以公开给大家呼叫的函式

external

大致上跟 public 一样,但会有一个小缺点,自己合约内要调用这种宣告的 function,会需要使用 this.f()

private

就是私有函式,只能被自己合约所调用,也不会被继承合约调用。

internal

private 很类似,但是可以如果被别人继承合约,是能够调用父层的 function


<<:  DAY1-EXCEL统计分析:前言

>>:  Angular 深入浅出三十天:表单与测试 Day01 - 前言

【Day33】[演算法]-深度优先搜寻DFS与广度优先搜寻BFS

深度优先搜寻(Depth-First Search,DFS)与广度优先搜寻(Breadth-Firs...

表单处理 Object 里的 Object

今天来看看一个常见问题。 { first_name: 'chris', last_name: 'wa...

DAY7 浅扒网路 - 估计被扒皮的是我不是网路

「将127.0.0.1改成内网IP」,这是上一篇的某个步骤,没浅浅扒一下网路基础,对学习有点影响~~...

Day8 跟着官方文件学习Laravel-注册帐号

今天要把用指令传进来的资料写进DB完成注册,首先我们要在DB中创建一张Users的表 CREATE ...

[DAY 29]用GooseMod轻松改变discord主题

GooseMod主要管理两个功能: 主题 套件 套件我看了一下觉得目前没有我喜欢的所以就不多作介绍 ...