第一章 Solidity原始檔的結構

2021-08-07 13:03:21 字數 2734 閱讀 4745

原始檔可以包含任意數量的智慧型合約的定義以及任意數量的include指令和pragma偽指令。

版本宣告**格式如下:

pragma solidity ^0.4

.0;

這段**的宣告表示,原始檔不會被0.4.0以下版本的編譯器編譯。當然同時也不會被0.5.0以上版本的編譯器起作用(這是由^符號來決定的)。

0.4.0~0.4.9這些版本支援上面**宣告的原始碼編譯,這樣處理的好處是,如果0.4.0編譯器有問題,可以隨時修復bug,將其調整為0.4.1

儘管solidity中沒有預設匯出的概念,但是solidity支援es6中可用的匯入宣告。

全域性引入,您可以使用以下形式的匯入語句:

import "filename";
這個宣告可以將filename檔案中可匯出的所有的全域性變數匯入到當前檔案的全域性作用域中。

自定義匯入變數名

import * as symbolname from "filename";
建立乙個全域性的變數名symbolnamesymbolname裡面包含filename這個檔案中所有的全域性變數。

自定義別名

import  from "filename";
alias等價於filename檔案中的symbol1symbol2等價於filename檔案中的symbol2

另外一種非es6的匯入方式

import "filename" as symbolname;
這種寫法不是es6裡面的寫法,但是使用非常方便,它等價於import * as symbolname from "filename";

在上面的filename中,始終用/符號來進行路徑分離,.代表當前路徑,..代表上一級路徑。當...後面沒有跟隨/符號時,它不能表示當前路徑和上一級路徑。還有,如果沒有.或者..時,所有的路徑都預設絕對路徑而不是相對路徑。

從當前路徑匯入乙個x檔案,使用import "./x" as x;如果你使用import "x" as x代替上面的**,它將不能正確引用到x檔案。

solc:

對於solc命令列編譯工具,這些對映還提供了context:prefix=target引數,其中context:=target是可選的,在context:prefix=target引數中,target預設為當前案例中的字首。所有重新對映的那些有規律的檔案的值都會包涵他們的依賴項一起被編譯。只要檔名中不包含=或者:,這個機制就完全向後相容並且不會發生變化。如果乙個匯入的檔案被重新對映,那麼在編譯的時候,它的字首將會被替換引數中的target的值。

並且執行下面的**。

source.sol

module2指向所有的舊版本,module1指向所有的新版本。

注意:solc只允許你從某一目錄中包含檔案:它們必須是具體指定的原始檔中的乙個檔案的目錄或者子目錄,或者是乙個重新對映目標的目錄或者子目錄。如果你希望允許包含絕對路徑,自需要新增重對映=/

如果存在多個有效檔案的重對映,那麼字首最長的乙個重對映將被應用。

remix:

remix為github提供自動重對映並且自動通過網路自動取回檔案:你可以如下所示使用。

單行注釋

// this is a single-line comment.
多行注釋
/*

this is a

multi-line comment.

*/

natspec注釋
pragma solidity ^0.4

.0;/** @title shape calculator. */

contract shapecalculator

}

簡介:資深講師,全棧工程師;區塊鏈、高可用架構技術愛好者。

個人部落格:

黎躍春-追時間的人

github:

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...

檔案配置pro git 第一章

這兩天朋友幾篇文章介紹了改檔案配置的文章.關聯文章的位址 概述 git命令繁雜,而且用起來相稱難以上手。為了熟練應用git,本系列文章將解析git的官方參考文件pro git,讓讀者可以之氣所以然,從道理上弄明git的執行道理 然後結合工程專案的需要和其中湧現的問題,提供響應的解決方法,從而讓讀者更...

檔案的讀寫 第一章練習

對檔案進行讀取操作,需要包含fstream標頭檔案 一 開啟乙個供輸出的檔案 include 為了開啟乙個可供輸出的檔案,定義乙個ofstream 供輸出用的file stream 物件,並將檔名傳入 以輸出模式開啟 d 001.txt ofdtream outfile d 001.txt 宣告ou...