2023-05-31|閱讀時間 ‧ 約 3 分鐘

【開發智能合約 — Solidity系列】實作篇Ep.16 — 匯入模組拚積木(Import)

一套大型的智能合約通常都會拆分成許多小合約,並且透過匯入的方式拼裝而成,而這樣的匯入在Solidity世界中就是「Import」,就讓我們來看看「Import」到底怎麼運用吧!

基本的相對路徑匯入方式

假設目錄結構如下
example.sol other.sol
我們引入的方式就會是:
import ‘./other.sol’

也可以遠端匯入

import ‘https://example.com/xxx.sol'

彈性的自訂名稱功能

當衝突發生時

當我們使用import時,預設會採用外部模組定義好的方法名稱,但這樣很容易發生衝突,假設外部有一個方法定義為「add()」,但內部也定義成相同名稱的方法時,會發生「DeclarationError」的錯誤,示範如下:
external.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7.0; function add(uint x, uint y) pure returns (uint) { return x + y; }
example.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7.0; import {add} from “./external.sol”; contract Example { function add(uint x, uint y) public pure returns (uint) { return x + y; } }
發生的錯誤如下:

如何補救呢?

solidity也跟javascript一樣提供別名的方式,為外部的衝突方法特定一個內部名稱,避免與內部相互衝突,import的方式如下:
import {add as extAdd } from “./external.sol”;

結語

這次介紹的import對於模組化非常的有幫助,尤其是分工協作的開發模式下,將需要的模組、功能規劃完畢之後就能夠各自進行開發,並且最終統一彙整,以拼裝積木的方式將各個功能模組兜在一起就能完成一份更加完整的智能合約,也讓合約的內容更加清晰,不會過於複雜。
今天的範例都在這裡「📦 solidity-remix-toturial/Ep16」歡迎自行取用。
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!
分享至
成為作者繼續創作的動力吧!
主軸圍繞於軟體科技, 除了過往經驗成章以外也持續學習新技能, 並將學習心法記錄與分享, 以期幫助相同道路之夥伴。 裡面包含著各種程式語言的疑難雜症解題技巧, 也提供資料庫、AI、認證與授權、工具庫...等技巧, 讓您自由找出您想要的解答, 如果您想要系統化的教學課程也歡迎至「🔒 阿Han的軟體心法實戰營」。
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

發表回應

成為會員 後即可發表留言