Solidity基本语法

1、预编译指令

指定当前文件编译器版本

语法:pragma Solidity <<^版本号>>;

版本号:主版本号和次版本号

脱字符号:^,指定主版本中的最新次版本

2、注释

单行注释://

多行注释:/* */

以太坊自然规范:单行:///

                            多行:/** */

3、导入

import语句

导入其他Solidity文件,方便在当前Solidity文件和代码访问其代码

语法:import '<<文件名>>.sol';

/   从其他目录和文件中分离

.   引用当前目录

..  引用父目录

4、合约

组成:

4.1、状态变量:

定义:由矿工永久存储在区块链/以太坊账本中。

           在合约中,没有在任何函数内声明的变量。

限定符: 内部变量:internal,当前合约、继承合约;

                私有状态变量:private,当前合约;

                公状态变量:public,所有合约;

                常量状态变量:constant,值不可变,声明时必须赋初值。

数据类型:值类型:bool、uint/int、bytes、address、enum

                  引用类型:mapping、struct、bytes/String

4.2、结构定义:

用户自定义的复合数据类型。

语法:struct <<结构名>>{

<<数据类型1>> <<变量名1>>;

<<数据类型2>> <<变量名2>>;

....

}

4.3、修改器定义:

改变执行代码行为的结构。

与函数关联,改变关联函数行为;执行目标函数之前,执行的函数。

语法:声明:

           modifier <<修改器名>>{ 

                        //逻辑代码

                        _ 表示执行目标函数

          }

           关联:

         function <<函数名>>(<<入参1>>,<<入参2>>,..) <<修改器名>> returns(<<出参1>>,<<出参2>>,..)

        {

                 //逻辑代码

        }

4.4、事件声明:

通过EVM的日志工具,向调用应用程序通知合约的当前状态;应用程序使用他们执行相关逻辑。

语法:event <<事件名>>(<<入参1>>,<<入参2>>,...);

4.5、枚举定义:

声明用户自定义的数据类型;

包含:一个枚举列表、一组自定义常量

语法:enum <<枚举名>> {<<常量1>>,<<常量2>>,...}

          

4.6、函数定义:

调用或触发合约中的某个函数时,会导致创建一个交易;

按需调用的一个代码单元。

语法:

        function <<函数名>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符1 限定符2 ...>> returns(<<出参1>>,<<出参2>>,...){

                //逻辑代码块

        }

限定符: internal,当前合约、继承合约;

               private,当前合约;

               public,所有合约;

                external,其他合约;

                constant或view,区块链状态不可变,读取和返回当前状态变量。

                pure,不访问当前状态和交易变量。

                payable,只接收调用者的以太币。

                constant或view,区块链状态不可变,读取和返回当前状态变量。

5、库

没有存储,不能够直接访问其中的函数,公共功能

语法:声明:library <<库名>>{}

          引用: using <<库名>> for <<类型名>>

                     <<类型名>>  <<类型变量名>>;

                     <<类型变量名>>.<<函数名>> (<<入参1>>,<<入参2>>,...) ;

6、接口

只包含函数声明;

纯抽象合约。

语法:声明:

        interface <<接口名>>{

                        function <<函数名1>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

                        function <<函数名2>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

         }

继承:

        contract <<合约名>> is <<接口名>>{

                        function <<函数名1>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

                        function <<函数名2>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

        }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Solidity是一种类似JavaScript的高级语言,用于编写以太坊智能合约。它可以通过编译生成以太坊虚拟机代码,并可以用于创建各种合约,如投票、众筹、封闭拍卖、多重签名钱包等。\[1\] 如果你想学习Solidity,可以参考CryptoZombies这个以太坊编程教学网站。它提供了互动教程,让学习者在编写以太坊游戏的过程中学习Solidity的用法。\[1\] 在Solidity中,你可以声明合约,类似于Java中的class。合约可以包含属性变量和方法。属性变量可以用来存储数据,而方法可以用来操作数据。\[2\] 在Solidity中,你可以使用constant、view、pure修饰函数。constant表示函数只能读取不可改变的状态变量,view表示函数只能读取不可改变的状态变量,而pure表示函数既不能读取也不能改变状态变量。\[2\] 此外,Solidity还支持位运算,包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)和右移(>>)等操作。你可以使用这些位运算符来进行位操作。\[3\] 如果你想深入了解Solidity的更多内容,可以参考相关的学习资源和教程。 #### 引用[.reference_title] - *1* [solidity教程-简介](https://blog.csdn.net/yang731227/article/details/83187422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Solidity 从入门到实战(一)](https://blog.csdn.net/qq_38716929/article/details/115970990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值