iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

不能不知的區塊鏈:入門指南系列 第 28

智慧合約實作 (三)

  • 分享至 

  • xImage
  •  

今天繼續來介紹Solidity的語法

以下面這個程式做舉例

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract DataTypes {
    bool public boo = true;

    uint8 public u8 = 1;
    uint public u256 = 456;
    uint public u = 123; // uint is same as uint256

    int8 public i8 = -1;
    int public i256 = 456;
    int public i = -123; // int is same as int256

    // minimum and maximum of int
    int public minInt = type(int).min; // int的最小值
    int public maxInt = type(int).max; // int的最大值

    address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;

    // Default values
    // Unassigned variables have a default value
    bool public defaultBoo; // false
    uint public defaultUint; // 0
    int public defaultInt; // 0
    address public defaultAddr; // 0x0000000000000000000000000000000000000000
}

昨天在介紹程式碼的時候,忘記講到什麼是public,今天就來補充說明一下。
在Solidity裡,有publicprivateexternalinternal這4種型別,分別所代表的意思是:

被宣告為 public 的變數和函式,任何使用者或者合約都可以呼叫和訪問。
被宣告為 private 的變數和函式,只能在其所在的合約中呼叫和訪問,即使是其子合約也沒有許可權訪問。
external 和 public 類似,只不過宣告為 external 的函式只能在合約之外呼叫,不能夠被合約內其他的函式呼叫。
internal 和 private 類似,比較特別的是如果某個合約繼承其父合約,這個合約就可以訪問其父合約中定義的“內部”函式。

回到這次的程式碼,要來介紹幾個基本的資料型態
bool : boolean 布林值

bool tboo = true;
bool fboo = false;

int : integer 整數

int positive = 100;
int negative = -100;
可以限制數字範圍:int8、int16、⋯⋯、int256
int8:-2的7次方~2的7次方-1,int16:-2的15次方~2的15次方-1,⋯⋯以此類推。
如果沒有特別標示 int 為 int256

uint : unsigned integer 無號整數

uint unsigned_int = 10;
一樣可以限制範圍:uint8、uint16、⋯⋯、uint256
int8:0~2的8次方-1,int16:0~2的16次方-1,⋯⋯以此類推。
如果沒有特別標示 uint 為 uint256

string : string 字串

string str = "Hello World"

address : address 地址

address addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;

參考資料:https://solidity-by-example.org/primitives/


上一篇
智慧合約實作 (二) - Hello World
下一篇
智慧合約實作 (四)
系列文
不能不知的區塊鏈:入門指南30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言