• solidity 语言总结笔记


    solidity 语言

    pragma solidity ^0.4.20;

    /*
    pragma: 版本声明
    solidity: 开发语言

    ^代表向上兼容
    */

    public,internal,pravate,external 4者的关系。

    属性默认权限为inernal,只有public类型的属性才可能供外部访问。internal和pravate类型的属性只能在合约内部使用。

    函数的权限默认是public类型,public类型的函数可供外表访问,而internal和pravate类型的函数不能通过指针(this表示当前智能合约的指针)访问。哪怕在内容通过this访问都会报错。在合约内部访问,可以直接访问函数。

    当使用public 函数时,Solidity会立即负责数组参数数据到内存,而external函数则是从calldata读取,而分配内存开销比直接从calldata读取要大的多。

    那为什么public函数要复制数组参数数据到内存呢?是因为public函数可能会被内部调用,而内部调用数组的参数是当做指向一块内存的指针。
    对于external函数不允许内部调用,它直接从calldata读取数据,省去了复制的过程。

    所以,如果确认一个函数仅仅在外部访问,请用external。

    /*备注: 不管是属性还是方法,只有public类型时,才可以通过合约地址进行访问,合约内容的this就是合约的地址。在合约内部如果要访问internal和private类型的属性或者是函数,可直接访问,不能通过this去访问。 */

    继承 只有pubulic类型的函数 才可以继承到新的子合约里面。 而子合约可以继承public和internal类型的属性。

    重写。继承父函数的子合约,在子合约内重写父合约里面的子函数,子合约内重写的函数优先级高于父函数里面的函数。

    solidity 引用类型有两种 一种是storage 一种是memory。 默认是memory 这个类型不会改变原引用数据的值。如果想改变引用过来的数据。需要使用storage引用类型。 用bytes把原数据转换为字节数组。根据索引更改原数据的数据。

  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/panfeng1104/p/8503193.html
Copyright © 2020-2023  润新知