zoukankan      html  css  js  c++  java
  • 01.基础篇

    三.solidity基础语法学习

    solidity语言没有main()函数,只要部署在区块链上就会不停的运行.

    3.1值数据类型

    1.状态变量

    成员变量也称状态变量

    定义在合约之内,但是在函数之外的变量,称为状态变量.这些变量会上传到区块链上保存下来.

    2.整型

    int(有符号整型,有正有负) uint(⽆无符号整型,⽆无负数) 以8位为区间,支持int8,int16,int24 至 int256,uint同理。

    int默认为int256,uint默认为uint256

    3.函数类型

    函数本身也是一个特殊的变量,它可以当作变量赋值,当作函数参数传递,当作返回值.

    函数声明: 关键字 函数名(参数类型)函数类型 返回值类型{}

     

     

     

     

    4.重要的关键字

    5.访问的可见性

    - public ,private

    修饰为public的状态变量量会默认生成一个同名的public函数 状态变量量默认是internal的(先理理解为private即可)

    -payable

    1. 任何函数,只要修饰为payable,那么就可以在调用这个方法的时候,对value字段赋值,然后将 价值value的钱转给合约。

    2. 若这个函数没有指定payable,但是对value赋值了了,那么本次调用会报错。

    //任何函数,只要指定了了payable关键字,这个合约就可以接受转账,调用时,也可以转 0 wei ​ function giveMoney() public payable { ​ }

    注意,所有在合约内的东西外部的观察者来说都是可见,将某些东西标记为 private 仅仅阻止了 其它合约来进行访问和修改,但并不不能阻止其它人看到相关的信息。

    -匿名函数

    一个合约可以有且只有一个匿匿名函数,此函数不能有参数,也不能有任何返回值,当我们企图去执行 一个合约上没有的函数时,那么合约就会执行这个匿名函数。

    当合约在只收到以太币的时候,也会调用这个匿名函数,而且一般情况下会消耗很少的gas,所以当你 接收到以太币后,想要执行一些操作的话,你尽可以把你想要的操作写到这个匿名函数里,因为这样 做成本非常便宜。

    //如果想向合约转账,在合约中添加如下函数即可 function() payable { ​ //函数体什么都不填 }

     

    -构造函数constructor

    关键字 contructor

    构造函数只能有一个,不能被重载;

    构造函数在函数运行的时候首先执行,主要做一些 初始化的作用;

     

    -地址

    以太坊地址的长度,大小 20个字节 ,20 * 8 = 160位 ,所以可以用一个 uint160 编码。地址是所 有合约的基础,所有的合约都会继承地址对象,通过合约的地址串,调用合约内的函数。

    -运算符

     

    -操作

    注:call(),delegatecall()以及callcode()都是底层的消息传递调用,最好在不到万不得已的情况不要使用,因为他们会破坏solidity的类型安全;

    -余额(balance)

    返回指定地址的余额;

     

    -合约地址(this)

    如果只想返回当前合约账户的余额,可以使用this指针,this表示合约自身的地址。

     

    -转账(send,transfer)

    send 和 transfer函数提供了由合约向其他地址转账的功能;

     

    -枚举类型()enum

    枚举类型是在Solidity中的一种用户自定义类型; 枚举可以显示的转换与整数进行转换,但不能进行隐式转换。显示的转换会在运行时检查数值范 围,如果不不匹配,将会引起异常。 枚举类型应至少有一名成员,枚举元素默认为uint8,当元素数量足够多时,会自动变为 uint16,第一个元素默认为0,使用超出范围的数值时会报错。

    -字节数组

    定长的字节数组

    solidity内置了一些数组的数据类型:(和go语言做一下对比, var b8 [8]byte),完全只读; bytes1 , ... , bytes32 ,允许值以步长1递增; byte默认表示bytes1,byte是类型,bytes是类型,bytes1是内置数组; bytes1只能存储1个字节,即8位的内容,bytes2最多只能存储2个字节,即16位的内容。以此类 推...;

    特性:

    长度可以读取 length; 长度不可以修改; 可以通过下标访问; 内容不可修改;

    内置方法: length() ,返回数组长度

     

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    程序员的人生规划
    利用jQuery实现CheckBox全选/全不选/反选
    小程序模板渲染
    小程序数据绑定详情
    fcitx-configtool
    小程序WXML基本使用
    小程序作用域与模块化
    小程序路由篇
    小程序App方法
    小程序中的setData的使用
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11970332.html
Copyright © 2011-2022 走看看