四、函數修改器《2022 solidity8.+ 版本教程到實戰》

一、函數修改器 modifier

在 solidity 中有一個函數修改器可作為前置、中置或者后置方法,有點像 ASP.NET 中的母版頁(最起碼差不多十年不碰了,不懂還有沒有這個概念),又有點像 ThinkPHP 中的前置方法,可以在指定某個函數調用前、中執行該函數,下面是一個示例:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.6;
contract ModifierTest{modifier checkAge(uint val){require(val<10,"Age < 10");_;}modifier checkHeight(uint val){require(val>260,"Height < 260");_;}function osVal(uint age,uint height) external pure checkAge(age) checkHeight(height){age+=1;}
}

以上代碼中使用 modifier 創建了函數修改器,modifier 之后是對應的函數修改器名稱,可以接收參數或者不接收參數,其中的 “_;” 表示使用這個修改器的函數代碼位置,例如:

modifier checkHeight(uint val){require(val>260,"Height < 260");_;}

在被 osVal 方法調用后,osVal 方法中代碼的位置就等于在“_;”位置進行填充。在 osVal 中使用這些修改器只需要再其后說明即可,并且可以傳入對應的參數,調用后效果如下:
在這里插入圖片描述
“三明治”用法:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.6;
contract ModifierTest{uint public age=0;modifier sandwich(){age+=1;_;age+=1;}function osVal() external sandwich(){age+=1;}
}

三明治用法就是用于中間:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285890.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285890.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285890.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#-基于ip2region的離線IP定位庫

前言在開發中&#xff0c;我們需要記錄關于登錄者的ip和位置信息&#xff0c;可以通過ip2region來實現&#xff01;比如說:qq&#xff0c;gitee等 我們在異地登錄時&#xff0c;會提醒我們賬號異地登錄&#xff01;外賣等軟件&#xff0c;需要地理位置&#xff0c;如果我們的gp…

【No.7 C++對象的構造與析構時間】

【注意】 程序語言只是我們與計算機交流并讓計算機實現我們創造性思想的工具&#xff0c;可以并鼓勵深入掌握一門語言&#xff0c;但千萬別沉迷于鉆某種語言的牛角尖&#xff0c;一定要把握好二者間的度本帖屬不定時連載貼&#xff0c;以試卷的形式提出一個比較基礎的問題供大家…

mysql按月進行表分區

數據庫 mysql 單表數據量達到千萬、億級&#xff0c;可以通過分表與表分區提升服務性能。 現有表accounting&#xff0c;4億條數據&#xff0c;數據訪問方式為insert與select&#xff0c;select為按月訪問&#xff0c;為減少數據與程序變更&#xff0c;采用表分區的方式。 數據…

C語言試題七十一之請編寫函數求出這個數的階乘

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 編寫函數:…

MFC 直線 虛線 折線 圓 橢圓 矩形 弧形

****Dlg.h頭文件加入&#xff1a; //為project加入畫筆、點變量數組 public:CPen m_pen[5];CPoint m_point[5]; public:void DrawLine(CDC *pDC);void DrawPolyline(CDC *pDC);void DrawPolygon(CDC *pDC);void DrawRect(CDC *pDC);void DrawRoundRect(CDC *pDC);void DrawElli…

最近無埋點技術很是流行,抽空研究了下諸葛IO,talkingData以及百分點這些業內知名公司的無埋點SDK,抽取其中重要的信息供大家參考:

1、首先什么是無埋點呢&#xff0c;其實所謂無埋點就是開發者無需再對追蹤點進行埋碼&#xff0c;而是脫離代碼&#xff0c;只需面對應用界面圈圈點點即可追加隨時生效的事件數據點。 無埋點的好處 其實無埋點并不是完全不用寫代碼&#xff0c;而是盡可能的少寫代碼。開發者將S…

【Pix4d精品教程】pix4d mapper相機未校準后手動添加連接點完美案例圖文教程

pix4d mapper相機未校準后手動添加連接點完美案例圖文教程 整體預覽 局部放大 如圖所示,紅色的照片為未校準的圖片,軟件無法自動獲取連接點,有關相機未校準的原因及解決辦法,可以參考《pix4d未校準相機:287 out of 402 images calibrated (71%), all images enabled, 6 bl…

五、構造函數《2022 solidity8.+ 版本教程到實戰》

一、構造函數 構造函數存在于很多語言中&#xff0c;可用于對當前對象在第一次創建時的初始化設置。在 solidity 合約中&#xff0c;也存在對應的構造函數&#xff0c;使用 constructor(){} 對其進行定義。 以下在合約中創建一個最簡單的構造函數代碼&#xff1a; // SPDX-L…

Blazor University (30)表單 —— 從 InputBase 派生

原文鏈接&#xff1a;https://blazor-university.com/forms/descending-from-inputbase/從 InputBase 派生源代碼[1]InputBase<T> 組件是各種 Blazor 輸入控件所繼承的抽象類。這個類在標準 HTML <input> 元素的基礎上增加了額外的功能&#xff0c;比如驗證——我們…

3.菜鳥教你一步一步開發 web service 之 axis 服務端創建

轉自&#xff1a;https://blog.csdn.net/shfqbluestone/article/details/37610601 第一步&#xff0c;新建一個工程&#xff0c;如圖&#xff1a; 選 Java 寫一個工程名&#xff0c;選擇好工程路徑&#xff0c;點下一步 選擇 webServices &#xff0c;在右邊的 version 中選擇 …

C語言試題七十二之請編寫函數判斷三角形的類型,并輸出其面積和類型。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 編寫函數:…

ArcGIS實驗教程——實驗三十四:ArcGIS地統計分析全解(直方圖、正態QQ圖、趨勢分析、voronoi圖、半變異函數、協方差云)

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據)》 文章目錄 一、地統計分析的基本原理二、地統計分析的工作流程三、探索性空間數據分析工具1. 直方圖2. QQ分布圖3. 趨勢分析4. Voronoi圖5. 半變異函數與協方差云6. 交叉協方差云四、空間插值一、地…

四則運算

四則運算的生成代碼&#xff08;C語言&#xff09; 學生&#xff1a;徐克 夏嘉暉 1 #include<stdio.h> 2 #include<stdlib.h> 3 main() 4 { 5 int a[50]; 6 int b[50]; 7 int num,count,i; 8 printf("1.加法\n"); 9 printf("2.減法…

用python計算圓周率

一、算法 馬青公式&#xff1a;馬青公式由英國天文學教授約翰馬青(John Machin &#xff0c;1686 –1751)于1706年發現。馬青公式每計算一項可以得到1.4位的十進制精度。因為它的計算過程中被乘數和被除數都不大于長整數&#xff0c;所以可以很容易地在計算機上編程實現。 二、…

六、數組及其操作《2022 solidity8.+ 版本教程到實戰》

一、數組 在 solidity 中&#xff0c;數組分為定長數組和動態數據&#xff0c;這兩者的定義上跟 golang 很相似&#xff1b;其定長數組在創建好后不能設置超過數組長度的值&#xff0c;也就是不能push&#xff1b;而動態數組允許 push&#xff0c;還有一點很有意思的是&#x…

【Pix4d精品教程】垂直攝影空三加密生成DOM和DSM,并按10m間距提取高程點,生成等高線

在航測項目中,通常使用pix4d軟件跑空三,生成數字正射影像DOM和數字表面模型DSM,當然還有點云數據。那么,在此基礎之上,怎樣根據航測要求,生成等間距5m或者10m的高程點和等高線呢,如上圖所示?本文就來借助ArcGIS軟件完成此波操作。 文章目錄 一、Pix4d生成DOM和DSM二、A…

C語言試題七十三之請編寫函數求兩個數的最大公約數

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 編寫函數:…

介紹一款python類型檢查工具pyright

介紹 近日&#xff0c;微軟在 Github 上開源了一個 Python 靜態類型檢查工具&#xff1a;pyright &#xff0c;引起了社區內的多方關注。 微軟在開源項目上的參與力度是越來越大了&#xff0c;不說收購 Github 這種大的戰略野心&#xff0c;只說它家開源的 VS Code 編輯器&am…

python使用localhost鏈接mysql出錯及解決辦法

在命令行下運行如下&#xff1a; import MySQLdb connMySQLdb.connect(hostlocalhost,userroot,passwdxxxx,dbtest1) xxxx是實際的密碼。 但是運行上面代碼時出現錯誤&#xff1a; Cant connect to local MySQL server... 但是&#xff0c;如果把localhost修改為127.0.0.1即可&…

使用 POST 向 ASP.NET Core 傳遞數據時的長度限制與解決方案

使用 HTTP 協議上傳文件的標準做法是&#xff1a;使用 multipart/form-data 。但有時為了實現簡單且要上傳的文件不會太大&#xff0c;仍然會采用 application/x-www-form-urlencoded 上傳文件&#xff0c;這就需要在上傳前對二進制文件進行編碼&#xff0c;比如使用 Base64 。…