Solidity知識點集 — 數(shù)據(jù)類型(一)

版本指令

pragma solidity ^0.4.19;

狀態(tài)變量

狀態(tài)變量是被永久地保存在合約中。也就是說它們被寫入以太幣區(qū)塊鏈中,你可以想象成寫入一個數(shù)據(jù)庫。

contract Example {
  // 這個無符號整數(shù)將會永久的被保存在區(qū)塊鏈中
  uint myUnsignedInteger = 100;
}

無符號整數(shù): uint

uint 無符號數(shù)據(jù)類型, 指其值不能是負數(shù),對于有符號的整數(shù)存在名為 int 的數(shù)據(jù)類型。

注: Solidity中, uint 實際上是 uint256代名詞。你也可以定義位數(shù)少的uints — uint8, uint16, uint32, 等…… 但一般來講你愿意使用簡單的 uint, 除非在某些特殊情況下。

數(shù)學(xué)運算

  • 加法: x + y
  • 減法: x - y,
  • 乘法: x * y
  • 除法: x / y
  • 取模 / 求余: x % y (例如, 13 % 5 余 3, 因為13除以5,余3)
  • 乘方: x ** y (x^y)

結(jié)構(gòu)體

struct Person {
  uint age;
  string name;
}

創(chuàng)建新的結(jié)構(gòu)體

Person[] public people;
// 創(chuàng)建一個新的Person:
Person satoshi = Person(172, "Satoshi");

// 將新創(chuàng)建的satoshi添加進people數(shù)組:
people.push(satoshi);

數(shù)組

Solidity 支持兩種數(shù)組: 靜態(tài) 數(shù)組和動態(tài) 數(shù)組

// 固定長度為2的靜態(tài)數(shù)組:
uint[2] fixedArray;
// 固定長度為5的string類型的靜態(tài)數(shù)組:
string[5] stringArray;
// 動態(tài)數(shù)組,長度不固定,可以動態(tài)添加元素:
uint[] dynamicArray;
// 結(jié)構(gòu)體類型的數(shù)組
Person[] people;

記?。籂顟B(tài)變量被永久保存在區(qū)塊鏈中。所以在你的合約中創(chuàng)建動態(tài)數(shù)組來保存成結(jié)構(gòu)的數(shù)據(jù)是非常有意義的。

公共數(shù)組

Person[] public people;

定義 public 數(shù)組, Solidity 會自動創(chuàng)建 getter 方法.

定義函數(shù)

function eatHamburgers(string _name, uint _amount) {

}

eatHamburgers("vitalik", 100);

注:習(xí)慣上函數(shù)里的變量都是以(_)開頭 (但不是硬性規(guī)定) 以區(qū)別全局變量。

私有 / 公共函數(shù)

Solidity 定義的函數(shù)的屬性默認為公共。 這就意味著任何一方 (或其它合約) 都可以調(diào)用你合約里的函數(shù)。

顯然,不是什么時候都需要這樣,而且這樣的合約易于受到攻擊。 所以將自己的函數(shù)定義為私有是一個好的編程習(xí)慣,只有當(dāng)你需要外部世界調(diào)用它時才將它設(shè)置為公共。

// 定義一個私有的函數(shù), 私有函數(shù)的名字用(_)起始
uint[] numbers;

function _addToArray(uint _number) private {
  numbers.push(_number);
}

函數(shù)的返回值

string greeting = "What's up dog";

function sayHello() public returns (string) {
  return greeting;
}

函數(shù)的修飾符: view / pure

view: 意味著它只能讀取數(shù)據(jù)不能更改數(shù)據(jù)
pure: 不讀取區(qū)塊鏈上的數(shù)據(jù)

·

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容