solidity 的语法 详解

1、创建合约

pragma solidity ^0.4.19;//1. 这里写版本指令
//这里建立僵尸工厂智能合约
contract ZombieFactory {
}

2、属性

/ 这个无符号整数将会永久的被保存在区块链中
  uint dnaDigits = 16; 

注: Solidity中, uint 实际上是 uint256代名词

一个256位的无符号整数。它是8位步进的.你也可以定义位数少的uints — uint8, uint16, uint32, 等…… 但一般来讲你愿意使用简单的 uint, 但在某些特殊情况下是需要使用指定位数的,因为可以节省gas. uint dnaDigits =13

3、运算符

  • , - , * , /, % Solidity 还支持 乘方操作 (如:x 的 y次方) // 例如: 5 ** 2 = 25

4、结构体

struct Person {
        uint age;
        string name;
}

5 、数组

// 固定长度为2的静态数组:uint[2] fixedArray;
// 固定长度为5的string类型的静态数组:string[5] stringArray;
// 动态数组,长度不固定,可以动态添加元素:uint[] dynamicArray;

6、使用结构体和数组

/ 创建一个新的Person:
Person satoshi = Person(172, "Satoshi");

// 将新创建的satoshi添加进people数组:
people.push(satoshi);

7、函数
Solidity 定义的函数的属性默认为公共(public),

function sayHello( string _name, uint _amount) public returns (string) {
  return greeting;
}

注: 习惯上函数里的变量都是以(__)开头 (但不是硬性规定) 以区别全局变量。
在函数名字后面使用关键字 private 即可,私有函数的名字用(
)下划线起始,而公有函数不需要下划线开头,这属于命名规范,我们可以通过这些区分合约中那些函数是私有的。
除 public 和 private 属性之外,Solidity 还使用了另外两个描述函数可见性的修饰词:internal(内部) 和 external(外部)。
internal 和 private 类似,不过,如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“内部”函数。
external 与public 类似,只不过这些函数只能在合约之外调用 - 它们不能被合约内的其他函数调用。

8、函数修饰符
函数定义为 view, 意味着它只能读取数据不能更改数据:
Solidity 还支持 pure 函数, 表明这个函数甚至都不访问应用里的数据

function sayHello() public view returns (string) {
}

9、事件

event IntegersAdded(uint x, uint y, uint result);

10、映射

//对于金融应用程序,将用户的余额保存在一个 uint类型的变量中:
mapping (address => uint) public accountBalance;
//或者可以用来通过userId 存储/查找的用户名
mapping (uint => string) userIdToName;

11、引入

  import "./someothercontract.sol";

你可能感兴趣的:(区块链)