Solidity基础语法结构 - 个人笔记(1)

以太坊拥有多种高级语言,可用于编写智能合约,每种语言都受到另一种广泛使用的语言的启发。最流行的一种叫做Solidity,它基于JavaScript。 

 它的语法接近于Javascript,是一种面向对象的语言。

 Remix - Ethereum IDEicon-default.png?t=LA92https://remix.ethereum.org/

 需要过硬的网速

目录

solidity的四种可见度/访问权限

solidity的三种修饰符

solidity的函数

布尔类型

与,或

通常运算符

位运算符


pragma solidity ^0.4.0;

可以被0.4.0-0.5.0之内的版本兼容

pragma solidity ^0.4.0;

contract helloworld {
    string myword = "helloworld";
    
    function show() public view returns(string){
        return myword;
    }
}

 

solidity的四种可见度/访问权限

public:任何人都可以调用该函数,包括DApp的使用者。
private:只有合约本身可以调用该函数(在另一个函数中)。
internal:只有这份合同以及由此产生的所有合同才能称之为合同。
external:只有外部可以调用该函数,而合约内部不能调用。

solidity的三种修饰符

view: 可以自由调用,因为它只是“查看”区块链的状态而不改变它
pure: 也可以自由调用,既不读取也不写入区块链
payable:常常用于将代币发送给合约地址。

solidity的函数

pragma solidity ^0.4.0;

contract helloworld {
    function stringtest(string inputstr) public view returns(string){
        return inputstr;
    }
}

Solidity是静态类型的,因此在为其分配值之前,总是需要定义变量的类型。所有类型的列表可以在Solidity的文档中找到。
最后,希望能够通过调用函数从我们的合约中查询出这个值。将调用这个函数getIt:

contract HelloWorld {
  string firstTest = "jonson";
     //添加函数:
     function getIt() returns(string) {
      return firstTest;
  }
}

布尔类型

pragma solidity ^0.4.0;

contract helloworld {
    bool boola=true; //声明一个布尔类型的值,只用一个等号
    function booltesta() public view returns(bool){
        return boola;
    }
    
    function booltestb(int a,int b) public view returns(bool){
        return a==b;
    }
}

 

 

与,或

pragma solidity ^0.4.0;

contract helloworld {
    function andtestTT() public view returns(bool){
        return true&&true;
    }
    function andtesTF() public view returns(bool){
        return true&&false;
    }
    function andtestFF() public view  returns(bool){
        return false&&false;
    }
    function ortestTT() public view returns(bool){
        return true||true;
    }
    function ortesTF() public view  returns(bool){
        return true||false;
    }
    function ortestFF() public view  returns(bool){
        return false||false;
    }
}

通常运算符

 

pragma solidity ^0.4.0;

contract helloworld {
     function jiatest(int a,int b) public view  returns(int){
        return a+b;
    }
    function jiantest(int a,int b)  public view returns(int){
        return a-b;
    }
    function chengtest(int a,int b) public view  returns(int){
        return a*b;
    }
    function chutest(int a,int b)  public view returns(int){
        return a/b;
    }
    function quyutest(int a,int b)  public view returns(int){
        return a%b;
    }
    function mitest(uint a,uint b)  public view returns(uint){
        return a**b; //此处必须为uint,直接写int256会报错
    }
}

 uint8 , 只能储存8bit数据

 

位运算符

1.& 操作数之间转换成二进制之后每位进行与运算操作(同1取1)
2.| 操作数之间转换成二进制之后每位进行或运算操作(有1取1)
3.~ 操作数转换成二进制之后每位进行取反操作(直接相反)
4.^ 操作数之间转换成二进制之后每位进行异或操作(不同取1)
5.<<操作数转换成二进制之后每位向左移动x位的操作
6.>>操作数转换成二进制之后每位向右移动x位的操作

 

pragma solidity ^0.4.0;

contract helloworld {
    function Wyutest(uint8 a,uint8 b)  public view returns(uint8){
        return a&b;
    }
    function Whuotest(uint8 a,uint8 b)  public view returns(uint8){
        return a|b;
    }
    function Wfantest(uint8 a)  public view returns(uint8){
        return ~a;//取反
    }
    function Wyihuotest(uint8 a,uint8 b)  public view returns(uint8){
        return a^b;//a,b异或
    }
    function zuoyitest(uint8 a,uint8 b)  public view returns(uint8){
        return a<<b;//a左移b位
    }
    function youyitest(uint8 a,uint8 b)  public view returns(uint8){
        return a>>b;//a右移b位
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Solidity是一种面向智能合约的编程语言,用于在以太坊平台上开发去中心化应用(DApp)。它的基本语法结构包括以下几个方面: 1. 声明:使用关键字`contract`来声明一个合约,类似于面向对象编程中的类。例如:`contract MyContract { ... }` 2. 状态变量:在合约中声明的变量称为状态变量,它们存储在以太坊区块链上。可以使用关键字`uint`、`bool`、`address`等来声明不同类型的变量。例如:`uint public myNumber;` 3. 函数:合约中的函数用于定义合约的行为。可以使用关键字`function`来声明函数,并指定函数的可见性(如`public`、`private`等)。例如:`function myFunction() public { ... }` 4. 事件:事件用于在合约中触发和记录特定的操作。可以使用关键字`event`来声明事件,并定义事件的参数。例如:`event MyEvent(address indexed _from, uint _value);` 5. 修饰器:修饰器用于修改函数的行为或者检查函数的前置条件。可以使用关键字`modifier`来声明修饰器,并在函数定义时使用修饰器。例如:`modifier onlyOwner() { ... }` 6. 构造函数:构造函数在合约创建时执行,并用于初始化合约的状态变量。构造函数与合约同名,并且没有返回类型。例如:`constructor() { ... }` 7. 继承:Solidity支持合约之间的继承关系,可以使用关键字`is`来实现继承。例如:`contract MyContract is BaseContract { ... }` 8. 异常处理:Solidity提供了异常处理机制,可以使用关键字`try`和`catch`来捕获和处理异常。例如:`try { ... } catch { ... }` 以上是Solidity的基本语法结构,通过这些基本元素可以编写出功能丰富的智能合约。如果你还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值