<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Solidity智能合約文件結構 [TOC] ## 版本申明 ``` pragma solidity ^0.4.0; ``` 說明: 1 版本要高于0.4才可以編譯 2 號表示高于0.5的版本則不可編譯,第三位的版本號但可以變,留出來用做bug可以修復(如0.4.1的編譯器有bug,可在0.4.2修復,現有合約不用改代碼)。 ## 引用其它源文件 * 全局引入 * ``` import "filename"; ``` * 自定義命名空間引入 * ``` import * as symbolName from "filename" ``` 分別定義引入 ``` import {symbol1 as alias, symbol2} from "filename" ``` 非es6兼容的簡寫語法 ``` import "filename" as symbolName ``` 等同于上述 ``` import * as symbolName from "filename" ``` **關于路徑** 引入文件路徑時要注意,非`.`打頭的路徑會被認為是絕對路徑,所以要引用同目錄下的文件使用 ``` import "./x" as x ``` 也不要使用下述方式,這樣會是在一個全局的目錄下 ``` import "x" as x; ``` 為什么會有這個區別,是因為這取決于編譯器,如果解析路徑,通常來說目錄層級結構并不與我們本地的文件一一對應,它非常有可能是通過ipfs,http,或git建立的一個網絡上的虛擬目錄。 ## 編譯器解析引用文件機制 各編譯器提供了文件前綴映射機制。 1. 可以將一個域名下的文件映射到本地,從而從本地的某個文件中讀取 2. 提供對同一實現的不同版本的支持(可能某版本的實現前后不兼容,需要區分) 3. 如果前綴相同,取最長, 4. 有一個`fallback-remapping`機制,空串會映射到`/usr/local/include/solidify` ## solc編譯器 命令行編譯器,通過下述命令命名空間映射提供支持 ``` context:prefix=target ``` 上述的`context:`和`=target`是可選的。所有`context`目錄下的以`prefix`開頭的會被替換為`target`。 舉例來說,如果你將`github.com/ethereum/dapp-bin`拷到本地的`/usr/local/dapp-bin`,并使用下述方式使用文件 ``` import "github.com/ethereum/dapp-bin/library/iterable_mapping.sol" as it_mapping; ``` 要編譯這個文件,使用下述命令: ``` solc github.com/ethereum/dapp-bin=/usr/local/dapp-bin source.sol ``` 另一個更復雜的例子,如果你使用一個更舊版本的dapp-bin,舊版本在/url/local/dapp-bin_old,那么,你可以使用下述命令編譯 ``` solc module1:github.com/ethereum/dapp-bin=/usr/local/dapp-bin \ modeule2:github.com/ethereum/dapp-bin=/usr/local/dapp-bin_old \ source.sol ``` 需要注意的是solc僅僅允許包含實際存在的文件。它必須存在于你重映射后目錄里,或其子目錄里。如果你想包含直接的絕對路徑包含,那么可以將命名空間重映射為`=\` 備注:如果有多個重映射指向了同一個文件,那么取最長的那個文件。 ## browser-solidity編譯器: browser-solidity編譯器默認會自動映射到github上,然后會自動從網絡上檢索文件。例如:你可以通過下述方式引入一個迭代包: ``` import "github.com/ethereum/dapp-bin/library/iterable_mapping.sol" as it_mapping ``` 備注:未來可能會支持其它的源碼方式 ## 代碼注釋 兩種方式,單行(`//`),多行使用(`/*…*/`) _示例_ ``` // this is a single-line comment /* this is a mulit-line comment */ ``` ### 文檔注釋 寫文檔用。三個斜杠`///`或`/** … */`,可使用`Doxygen`語法,以支持生成對文檔的說明,參數驗證的注解,或者是在用戶調用這個函數時,彈出來的確認內容。 ``` pragma solidity ^0.4.0; /** @title Shape calculator.*/ contract shapeCalculator{ /** *@dev calculate a rectangle's suface and perimeter *@param w width of the rectangles *@param h height of the rectangles *@return s surface of the rectangles *@return p perimeter of the rectangles */ function rectangles(uint w, uint h) returns (uint s, uint p){ s = w * h; p = 2 * ( w + h ) ; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看