一个 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
的状态变量,类型为uint
, set
和get
函数可用于修改或检索变量的值。
导入文件
上面的例子没有import语句,但是Solidity 支持与JavaScript非常相似的导入语句。
下面的语句从“filename”导入所有全局符号。
pragma solidity ^0.4.0;
下面的示例,创建一个新的全局符号symbolName
,它的成员都是来自“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
本文来自博客园,作者:大码王,转载请注明原文链接:https://www.cnblogs.com/huanghanyu/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具