一个 Solidity 源文件可以包含任意数量的合约定义、import指令和pragma指令。

让我们从一个简单的 Solidity 源程序开始。下面是一个 Solidity 源文件的例子:

pragma solidity >=0.4.0 <0.6.0;

contract SimpleStorage {
uint storedData; function set(uint x) public {
storedData = x;
} function get() public view returns (uint) {
return storedData;
}
}

Pragma

第一行是pragma指令,它告诉我们源代码是为Solidity version 0.4.0及以上版本编写的,但不包括version 0.6.0及以上版本。

pragma指令只对自己的源文件起作用,如果把文件B导入到文件A,文件B的pragma将不会自动应用于文件A。

上面的pragma指令意思是,源文件不能用低于0.4.0版本的编译器编译,也不能用0.5.0版本及以上版本的编译器编译。

这里第二个条件是用^加上的,表示不超过0.5.0版本,背后的意思是,0.4.0 ~ 0.4.9 之间的小版本改动通常不会有破坏性更改,源代码应该都是兼容的。

Contract/智能合约

智能合约是位于以太坊区块链上特定地址的代码(函数)和数据(状态)的集合。

这行代码:uint storedData;,声明了一个名为storedData的状态变量,类型为uintsetget函数可用于修改或检索变量的值。

导入文件

上面的例子没有import语句,但是Solidity 支持与JavaScript非常相似的导入语句。

下面的语句从“filename”导入所有全局符号。

pragma solidity ^0.4.0;

下面的示例,创建一个新的全局符号symbolName,它的成员都是来自“filename”的全局符号。

import * as symbolName from "filename";

要从当前目录导入文件x,请使用import "./x"。如果不指定当前路径,可能会在全局“include目录”中引用另一个文件。

保留关键字

下面是 Solidity 语言中的保留关键字:

  • abstract
  • after
  • alias
  • apply
  • auto
  • case
  • catch
  • copyof
  • default
  • define
  • final
  • immutable
  • implements
  • in
  • inline
  • let
  • macro
  • match
  • mutable
  • null
  • of
  • override
  • partial
  • promise
  • reference
  • relocatable
  • sealed
  • sizeof
  • static
  • supports
  • switch
  • try
  • typedef
  • typeof
  • unchecked

最新文章

  1. EMLS项目推进思考
  2. JavaScript深入浅出1-数据类型
  3. App Icon生成工具(转载)
  4. python center, ljust, rjust
  5. powerdesigner 15 如何导出sql schema
  6. 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记
  7. C++中的构造函数,拷贝构造函数和赋值运算
  8. Android 上使用 iconfont 的一种便捷方案
  9. poj 1979 Red and Black(dfs)
  10. QGIS
  11. PotPlayer播放器 莫尼卡汉化绿色版 V1.6.48089 32位
  12. hdu_2842_Chinese Rings(矩阵快速幂)
  13. [信号处理技术]关于EMD的产生
  14. 【转】c# [Serializable]的作用
  15. NYOJ - 矩形嵌套(经典dp)
  16. [LeetCode&amp;Python] Problem 830. Positions of Large Groups
  17. poj2965(位运算压缩+bfs+记忆路径)
  18. vue-cli打包之后的项目在nginx的部署
  19. 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现
  20. ORACLE创建用户,建表空间,授予权限

热门文章

  1. IntelliJ IDEA 2019.3.4永久破解(持续更新)--已更新
  2. SpringBoot环境下使用测试类注入Mapper接口报错解决
  3. FPAG_Microblaze_PWM_定时器
  4. Filebeat日志收集简单使用
  5. dsu on tree详解
  6. 网络安全 - SSL/TLS协议运行机制的概述
  7. 【SDOI2010】猪国杀 题解(模拟)
  8. Android 布局控件——滚动条视图,日期,时间
  9. linux下的node版本管理利器:nvm
  10. 038_go语言中的状态协程