今天繼續來介紹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裡,有public
、private
、external
、internal
這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/