Solidity学习笔记5 - 类型的判断及转换

类型推断(Type Deduction)为了方便,并不总是需要明确指定一个变量的类型,编译器会通过第一个向这个对象赋予的值的类型来进行推断1。 12uint24 x = 0x123;var y = x; 函数的参数,包括返回参数,不可以使用var这种不指定类型的方式。 需要特别注意的是,由于类型推断是根据第一个变...

Solidity学习笔记4 - 左值的相关运算符

左值的相关运算符左值1,是指位于表达式左边的变量,可以是与操作符直接结合的形成的,如自增,自减;也可以是赋值,位运算。 可以支持操作符有:-=,+=,*=,%=,|=,&=,^=,++,--。 特殊的运算符deletedelete运算符,用于将某个变量重置为初始值。对于整数,运算符的效果等同于a = 0。...

Solidity学习笔记3 - 数据位置

数据位置(Data location)复杂类型,如数组(arrays)和数据结构(struct)在Solidity中有一个额外的属性,数据的存储位置。可选为memory和storage。 memory存储位置同我们普通程序的内存一致。即分配,即使用,越过作用域即不可被访问,等待被回收。而在区块链上,由于底层实现了...

Solidity学习笔记2 - 值类型与引用类型

值类型与引用类型由于Solidity是一个静态类型的语言,所以编译时需明确指定变量的类型(包括本地变量或状态变量),Solidity编程语言提供了一些基本类型(elementary types)可以用来组合成复杂类型。 类型可以与不同运算符组合,支持表达式运算,可以通过表达式的执行顺序来了解执行顺序。 值类型(V...

Solidity学习笔记1 - 基本介绍

Solidity与其它语言相关的特点 Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。 它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些: 以太坊底层是基于帐户,而非UTXO的,所以有一个...

Vue源码系列2-完整的 DOM diff 流程是怎样的(1)

组件的渲染过程中创建了一个带副作用的渲染函数,当数据变化的时候就会执行这个渲染函数来触发组件的更新。 副作用渲染函数更新组件的过程更新组件主要做三件事情:更新组件 vnode 节点(initialTree)、渲染新的子树 vnode(subTree)、根据新旧子树 vnode 执行 patch 逻辑。 patch...

Vue源码系列1-Vnode到真实node的渲染(2)

Vnode到真实node的渲染重写app.mount的原因是vue需要支持多平台渲染,每个平台的mount方法都是对应平台的组件渲染流程。 12345678mount(rootContainer) { // 创建根组件的 vnode const vnode = createVNode(rootCom...

Vue源码系列1-Vue3.0的优化点

Vue3.0的优化vue1.0 到 vue2.0最大的升级就是引入了虚拟 DOM 的概念,它为后续做服务端渲染以及跨端框架 Weex 提供了基础。 1、源码优化源码的优化主要体现在使用 monorepo 和 TypeScript 管理和开发源码,这样做的目标是提升自身代码可维护性。 monorepo本质上从以前把...

重读高程-面向对象的程序设计

理解对象 无序属性的集合,其属性可以包含基本值、对象或者函数。严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。正因为这样(以及其他将要讨论的原因),我们可以把 ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数。 属...

重读高程-引用类型

引用类型引用类型的值(对象)是引用类型的一个实例。在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但这种称呼并不妥当。尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。引用类型有时候也被称为对象定义,因...