数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品

简介: 合约sample1  contract sample1{  int a;  function sample1(int b)payable{  a=b;

  外部函数调用–this关键字

  合约sample1

  contract sample1{

  int a;

  function sample1(int b)payable{

  a=b;

  }

  function assign(int c){

  a=c;

  }

  function makePayment(int d)payable{

  a=d;

  }

  合约sample2

  contract sample2{

  function hello(){}

  function sample2(address addressOfContract){

  sample1 s=(new sample1).value(12)(23);

  s.makePayment(22);

  s.makePayment.value(45)(12);

  s.makePayment.value(4).gas(900)(12);

  this.hello();//利用this调用外部合约函数

  sample1 s2=sample1(addressOfContract);

  s2.makePayment(112);

  }

  }

  注意:使用this关键字进行的调用称为外部调用。在函数中,this关键字代表当前合约实例

  合约功能——深入理解合约

  可见性

  可见性定义了谁可以看到它,函数和状态变量有四种可见性:external、public、internal和private

  函数可见性,默认为public

  状态变量可见性,默认为internal

  external:外部函数只能由其他合约调用,或者通过交易调用——this.f()

  public:公共函数和状态变量可以用所有可行办法访问

  internal:内部函数和状态变量只可以内部访问,即从当前合约内和继承它的合约访问。不可以使用this访问它

  private:私有函数和状态变量类似于内部函数,但是继承合约不可以访问它们

  示例
  contract sample1{

  int public b=78;

  int internal c=90;

  function sample1(){

  this.a();//外部访问

  b=21;//内部访问

  }

  function a()external{}

  }

  contract sample2{

  int internal d=9;

  int private e=90;

  }

  //sample3继承sample2

  contract sample3 is sample2{

  sample1 s;

  function sample3(){

  s=new sample1();

  s.a();//外部访问

  }

  }

  函数修改器(较难理解)

  先看一个修改器的例子:

  contract sample{

  int a=90;

  modifier myModifier1(int b){

  int c=b;

  _;

  c=a;

  a=1;

  }

  modifier myModifier2{

  int c=a;

  _;

  }

  modifier myModifier3{

  a=96;

  return;

  _;

  a=99;

  }

  modifier myModifier4{

  int c=a;

  _;

  }

  function myFunction()myModifier1(a)myModifier2 myModifier3 returns(int d){

  a=2;

  return a;

  }

  }

  回退函数

  即一个合约中唯一一个未命名函数。

  不能有实参

  不能有返回值

  如果其他函数都不能匹配给定的函数标识符,那么就执行回退函数

  如果你想让你的合约接收以太币,就必须实现回退函数

  contract sample{

  function()payable{

  }

  }

 

  继承

  即使一个合约继承自其他多个合约,在区块链上也只会创建一个合约。

  父合约的代码总是会被复制到最终合约里。

  关键字is

  示例

  contract sample1{

  function a(){}

  function b(){}

  }

  //合约2继承自合约1

  contract sample2 is sample1{

  function b(){}

  }

  contract sample3{

  function sample3(int b){

  }

  }

  //合约4继承自合约1与合约2

  contract sample4 is sample1,sample2{

  function a(){}

  function c(){

  a();

  //执行合约1中的a方法

  sample1.a();

  //执行合约2中的b方法

  b();

  }

  }

  关键字super

  用于引用最终继承链中的下一个合约

  示例

  contract sample1{

  }

  contract sample2{

  }

  contract sample3 is sample2{

  }

  contract sample4 is sample2{

  }

  contract sample5 is sample4{

  function myFunc(){}

  }

  contract sample6 is sample1,sample2,sample3,sample4,sample5{

  function myFunc(){

  //执行sample5中的myFunc方法

  super.myFunc();

  }

  }

  抽象合约

  仅包含函数原型而不包含函数实现的合约

  抽象合约不能被编译

  如果一个合约继承自抽象合约且不重写,那么它自己也是抽象合约

  示例

  contract sample1{

  function a()returns(int b);

  }

  contract sample2{

  function myFunc(){

  sample1 s=sample();

  s.a();

  }

  }

相关文章
|
21小时前
|
移动开发 前端开发 JavaScript
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
|
21小时前
|
移动开发 前端开发 JavaScript
10款精美的web前端源码的特效(1),头条前端面试节奏
10款精美的web前端源码的特效(1),头条前端面试节奏
|
1天前
|
数据安全/隐私保护
那些酷炫的网页你也可以做到——第六篇,小型公司web开发
那些酷炫的网页你也可以做到——第六篇,小型公司web开发
|
1天前
|
JavaScript
js中如何使用工厂方式和构造函数创建对象,web开发项目实例
js中如何使用工厂方式和构造函数创建对象,web开发项目实例
|
1天前
|
JavaScript 前端开发 开发者
在Web开发中,事件处理是一个至关重要的概念
【5月更文挑战第17天】Vue.js的事件处理是其核心特性之一,允许开发者响应用户操作。通过v-on(或@)指令绑定DOM事件到方法,实现交互。事件修饰符如.stop、.prevent等简化处理逻辑。此外,Vue支持自定义事件,便于组件间通信,如子组件通过$emit触发事件,父组件使用v-on监听并响应。理解这些机制能帮助开发者更有效地管理Vue应用的事件流程。
9 0
|
1天前
|
前端开发 Java Go
从前端到后端:构建现代化Web应用的技术实践
本文将介绍如何通过前端和后端技术相结合,构建现代化Web应用的技术实践。我们将探讨前端开发、后端架构以及多种编程语言(如Java、Python、C、PHP、Go)在构建高效、可扩展的Web应用中的应用。
|
1天前
|
前端开发 JavaScript 算法
探索现代Web开发中的前端框架选择
在现代Web开发中,前端框架的选择是至关重要的。本文将深入探讨各种前端框架的特点和适用场景,帮助开发者了解不同框架的优势和劣势,并为他们提供在项目中做出明智选择的指导。
|
1天前
|
设计模式 存储 前端开发
JS的几种设计模式,Web前端基础三剑客学习知识分享,前端零基础开发
JS的几种设计模式,Web前端基础三剑客学习知识分享,前端零基础开发
|
1天前
|
存储 JSON JavaScript
Web存储与传输:技术的背后
Web存储与传输:技术的背后
|
1天前
|
存储 安全 前端开发
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
第五章 跨域资源共享(CORS):现代Web开发中的关键机制