經過昨天對Solidity的初步認識,今天要介紹的是函數在合約上的應用,對內容有興趣的歡迎一起看下去喔~~
即是透過呼叫或是輸入參數得到回傳值或是修改某些值。在Solidity的語言中可以回傳多個值
放大來看一下程式碼的部分
pragma solidity ^0.8.11;
contract MyContract{
uint public x;
uint public y;
uint public z;
function multipleReturns() public view returns(uint a,uint b,uint c ){
return(4,5,6);
}
function processMultipleReturns() external{
(x,y,z) = multipleReturns();
}
}
定義函數的執行或訪問權限:主要是防止他人對我們的合約狀態進行修改
種類:
public:即公開的,任何合約或帳戶都有呼叫函數的權限
private:非公開的,只有當前合約才有呼叫函數的權限
external:除了自己和繼承以外的合約都有呼叫函數的權限
internal:和external相反,只有自己和繼承的合約才有呼叫函數的權限
當合約被創建時只會跑一次的函數,通常用於初始宣告
contract Practice{
uint c;
constructor() public{
c=5;
}
}
也可以在建構子裡面放入參數
contract Practice{
uint c;
constructor(uint new_c) public{
c=new_c;
}
}
只有external的權限,發生在沒有任何符合交易的情況下就會觸發,像是當一筆交易並非由呼叫函數引起的而被送往合約時,就會執行。
最後運用今天所學來實作一個查看當前合約擁有的金額
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Practicetime{
function getBalance () public view returns(uint){
uint now = address(this).balance;
return now;
}
fallback () external payable{
}
}
注意此實作在執行前須連線到網路錢包(例:METAMASK)才可執行
呼叫函數用在區塊鏈是修改區塊鏈上的狀態,此過程也是進行交易的步驟之一,所以會被記錄在鏈上。
今天的內容主要是學習Solidity的呼叫函數,感謝看到最後的你~~~
參考書籍:Solidity實戰全書