總結Solidity 的數據類型

數據類型

在 Solidity 中,類型系統非常豐富,主要分為 值類型(Value Types)和 引用類型(Reference Types)。此外,還有一些特殊類型和全局變量。

一.值類型

布爾型(bool)

bool isActive = true;

二. 整數型(int/uint)

  • int:帶符號整數(可以是負數),uint:無符號整數(只能是非負數)
  • 指定位寬:int8int256(步長為 8 位),默認 int 等于 int256
  • 同理,uint 默認等于 uint256
int256 minValue = -1000;
uint256 maxValue = 1000;

三. 地址類型(address 和 address payable)

可以使用 balance 屬性查詢地址的余額,并使用 transfer 函數向可支付地址發送以太幣(以 wei 為單位)

address payable x = payable(0x123);
address myAddress = address(this);
if (x.balance < 10 && myAddress.balance >= 10) x.transfer(10);

固定長度字節數組(bytes1 到 bytes32)

bytes32 data = "hello";

動態字節數組(bytes 和 string)

//bytes:動態長度的字節數組,適合存儲任意二進制數據
//string:動態長度的 UTF-8 字符串
bytes dynamicData = "Hello";
string greeting = "Hello, World!";

枚舉(enum)

enum Status { Pending, Shipped, Accepted, Rejected, Canceled }
Status public currentStatus = Status.Pending;

函數類型(function)

//分為 internal 和 external,表示合約內外的函數調用方式。function add(uint a, uint b) public pure returns (uint) {return a + b;
}

二.引用類型(Reference Types)

引用類型的數據存儲在內存(Memory)或存儲(Storage)中,傳遞時是「引用傳遞」,改變值會影響原數據。

數組(Array)

  • 固定長度數組:uint[5] arr;
  • 動態長度數組:uint[] dynamicArr;
  • 可以使用 push()pop()length 等方法操作。
uint[] numbers;
numbers.push(1);

結構體(Struct)

自定義數據結構,用于封裝多種類型的變量

struct Person {string name;uint age;
}
Person public person = Person("Alice", 30);

映射(Mapping)

類似哈希表,key 映射到 valuekey 可以是任何基本類型,但 value 可以是任意類型。

mapping(address => uint) public balances;

存儲位置(Data Location)

  • memory:函數調用時使用的臨時內存,函數返回后即丟棄。
  • storage:合約的持久存儲,狀態變量默認是 storage
  • calldata:函數的參數存儲在 calldata 中,無法修改,節省 Gas 費。

三、特殊類型和全局變量

合約類型(Contract)

可以定義合約類型,支持合約之間的交互。

contract MyContract {function greet() public pure returns (string memory) {return "Hello!";}
}

全局變量

提供區塊鏈信息和交易信息:

  • msg.sender:調用合約的地址
  • msg.value:調用時發送的以太幣數量
  • block.timestamp:當前區塊的時間戳
address sender = msg.sender;

總結

  • 值類型boolint/uintaddressbytesstringenumfunction
  • 引用類型arraystructmapping
  • 存儲位置memorystoragecalldata
  • 特殊類型contractinterfacelibrary

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72706.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72706.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72706.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android audio(8)-native音頻服務的啟動與協作(audiopolicyservice和audioflinger)

音頻策略的構建 1、概述 2、AudiopolicyService 2.1 任務 2.2 啟動流程 2.2.1 加載audio_policy.conf&#xff08;xml&#xff09;配置文件 2.2.2 初始化各種音頻流對應的音量調節點 2.2.3 加載audio policy硬件抽象庫 2.2.4設置輸出設備 ps:audiopatch流程簡介 2.2.5打開輸出設…

DeepSeek:從入門到精通

DeepSeek是什么&#xff1f; DeepSeek是一家專注通用人工智能&#xff08;AGI&#xff09;的中國科技公司&#xff0c;主攻大模型研發與應 用。DeepSeek-R1是其開源的推理模型&#xff0c;擅長處理復雜任務且可免費商用。 Deepseek可以做什么&#xff1f; 直接面向用戶或者支持…

【一起來學kubernetes】17、Configmap使用詳解

前言概述核心特性創建 ConfigMap使用 ConfigMap1. **環境變量**2. **Volume 掛載**3. **命令行參數** 更新與熱重載Docker容器中Java服務使用Configmap**一、通過環境變量注入****步驟說明****示例配置** **二、通過 Volume 掛載配置文件****步驟說明****示例配置** **三、動態…

【八股文】從瀏覽器輸入一個url到服務器的流程

1.url解析與DNS解析 瀏覽器解析用戶輸入的URL&#xff0c;提取協議&#xff08;HTTP\HTTPS&#xff09;、域名、端口及路徑等信息 瀏覽器首先檢查本地DNS緩存和系統DNS緩存&#xff0c;若未命中&#xff0c;查詢本地hosts文件 最后遞歸查詢向本地DNS服務器發起請求&#xff…

網絡空間安全(34)安全防御體系

前言 安全防御體系是一個多層次、多維度的系統&#xff0c;旨在保護組織或個人的信息資產免受各種網絡攻擊和威脅。 一、技術層面 網絡邊界防御 防火墻&#xff1a;部署在網絡邊界&#xff0c;通過設定規則允許或阻止特定流量的進出&#xff0c;保護內部網絡不受外部攻擊。入侵…

Linux 入門:權限的認識和學習

目錄 一.shell命令以及運行原理 二.Linux權限的概念 1.Linux下兩種用戶 cannot open directory .: Permission denied 問題 2.Linux權限管理 1).是什么 2).為什么&#xff08;權限角色目標權限屬性&#xff09; 3).文件訪問者的分類&#xff08;角色&#xff09; 4).文…

【筆記】計算機網絡——數據鏈路層

概述 鏈路是從一個結點到相鄰結點的物理路線&#xff0c;數據鏈路則是在鏈路的基礎上增加了一些必要的硬件和軟件實現 數據鏈路層位于物理層和網絡層之間&#xff0c;它的核心任務是在直接相連的節點&#xff08;如相鄰的交換機&#xff0c;路由器&#xff09;之間提供可靠且…

ngx_url_t

定義在 src/core/ngx_inet.h typedef struct {ngx_str_t url;ngx_str_t host;ngx_str_t port_text;ngx_str_t uri;in_port_t port;in_port_t default_port;in_port_t …

搜廣推校招面經五十四

美團推薦算法 一、手撕Transformer的位置編碼 1.1. 位置編碼的作用 Transformer 模型沒有顯式的序列信息&#xff08;如 RNN 的循環結構&#xff09;&#xff0c;因此需要通過位置編碼&#xff08;Positional Encoding&#xff09;為輸入序列中的每個位置添加位置信息。位置…

網絡爬蟲【爬蟲庫urllib】

我叫不三不四&#xff0c;很高興見到大家&#xff0c;歡迎一起學習交流和進步 今天來講一講爬蟲 urllib介紹 Urllib是Python自帶的標準庫&#xff0c;無須安裝&#xff0c;直接引用即可。 Urllib是一個收集幾個模塊來使用URL的軟件包&#xff0c;大致具備以下功能。 ● urlli…

LabVIEW棉花穴播器排種自動監測系統

一、項目背景與行業痛點 1. 農業需求驅動 我國棉花主產區&#xff0c;種植面積常年超250萬公頃&#xff0c;傳統人工播種存在兩大核心問題&#xff1a; 效率瓶頸&#xff1a;人均日播種面積不足0.5公頃&#xff0c;難以匹配規模化種植需求&#xff1b; 精度缺陷&#xff1a;人…

解決diffusers加載stablediffusion模型,輸入prompt總是報錯token數超出clip最大長度限制

1. StableDiffusion1.5 在加載huggingface中的擴散模型時&#xff0c;輸入prompt總是會被報錯超過clip的最大長度限制。 解決方案&#xff1a;使用compel庫 from diffusers import AutoPipelineForText2Image import torch import pdb from compel import Compeldevice torc…

jmeter配件元素

jmeter配件元素 CSV Data Set Config名詞解釋測試場景Recycle on EOF:False配置測試結果 Recycle on EOF:True配置測試結果 Sharing mode:All Threads配置測試結果 Sharing mode:Current thread group配置測試結果 Sharing mode:Current thread配置測試結果 HTTP Header Manage…

Navicat SqlServer 設置自增主鍵

Navicat是一款優秀的數據庫管理工具&#xff0c;可以連接很多類型的數據庫。使用它可以極大的提高工作效率。 Navicat 不能設置SqlServer自增字段&#xff0c;只能通過sql語句來實現 建表時設置 create table <表名> ( <字段1-主鍵> int identity (1,1) primar…

Elasticsearch搜索引擎 3(DSL)

Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;語句來定義查詢條件&#xff0c;其JavaAPI就是在組織DSL條件。 1.DSL查詢 葉子查詢&#xff08;Leaf query clauses&#xff09;&#xff1a;在特定的字段里查詢特定值&#xff0c;屬于簡單…

final 在 java 中有什么作用?

final 在 java 中有什么作用&#xff1f; 修飾變量 修飾基本數據類型變量&#xff1a; 當用final修飾基本數據類型變量時&#xff0c;該變量就變成了常量&#xff0c;其值在初始化后不能被改變。 final int num 10; // num 20; // 這行代碼會導致編譯錯誤&#xff0c;因…

Dubbo/Hession2序列化Immutable類型的集合異常問題

問題排查 根據堆棧信息可見&#xff0c;dubbo使用默認的hession2進行序列化時出現了異常&#xff0c;異常堆棧根原因為&#xff1a;null array 位于java.util.CollSer#readResolve方法中&#xff0c;即在序列化集合時&#xff0c;集合數組為空。 向上追溯jdk.internal.ref…

目標檢測任務,如何區分兩個相近似的目標

首先&#xff0c;要了解清楚檢測的場景下&#xff0c;肉眼能否區分出目標的差異性。 如果可以區分&#xff0c;那觀察數據周圍背景的差異是否較大&#xff0c;可以先通過添加樣本來提升模型的檢測精度。添加樣本時一定要注意&#xff0c;樣本標注的準確性&#xff0c;樣本的豐…

Java面試黃金寶典1

1. 8 種基本數據類型 整數類型 byte&#xff1a; 它是最小的整數類型&#xff0c;占用 1 個字節&#xff08;8 位&#xff09;。在一些對內存使用要求極高的場景&#xff0c;比如嵌入式系統開發、數據傳輸時對數據量有嚴格限制的情況&#xff0c;會使用 byte 類型。例如&#x…

OSGEarth

OSGEarth 基于 OpenSceneGraph 構建的一個擴展庫&#xff0c;專門用于地球科學和地理信息系統&#xff08;GIS&#xff09;數據的可視化。它允許開發者創建逼真的三維地球模型&#xff0c;并在其上展示各種地理空間數據。 高端一點的表述 基于三維引擎osg開發的三維數字地球…