之前,我們探討了 Vyper 為什麼是遊戲規則的改變者,因為它是最快發展的智能合約開發語言之一。
我們也探討了一些基礎知識,例如 Pragma 和 Constructor。您可以在這裡閱讀。
今天,我們將深入研究資料類型及其工作原理。
資料類型幫助我們組織代碼中的不同信息,就像我們在家裡將物品分類到特定位置一樣。
這些類型在程式運行之前就已設定。就像設計用於液體的容器不適合儲存固體一樣,Vyper 中的每個變數只能儲存其設計的資料類型。
編寫程式碼時,我們需要指定每個變數將保存什麼資料類型——無論是用於計算的數字、用於名稱的文本,還是用於簡單決策的真/假。這些類型確保我們的程式正確處理訊息,防止出現諸如嘗試將某人的姓名相乘或將字母相加之類的錯誤。
理解 Vyper 中的資料型別
將布林值想像成電燈開關-它們只能處於兩種狀態:真或假。我們在程式碼中使用它們來做出是/否決策。
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
某些運算子可以有效地與布林值一起使用,包括 not、或 == 和 !=。這意味著我們可以用它們來證明真假。
**运算符** | **描述** |
---|---|
not x | 逻辑否定 |
x and y | 逻辑合取 |
x or y | 逻辑析取 |
x == y | 相等 |
x != y | 不相等 |
not x - 將真/假值翻轉為其相反值
is_door_locked = True
is_door_unlocked = not is_door_locked # 結果:False
這就像說「相反的」--如果門是鎖著的,那麼不鎖著就意味著開著。
x and y - 兩個條件都必須為真
has_ticket = True
has_id = True
can_board_plane = has_ticket and has_id # 結果:True
就像你需要機票和身分證才能登機一樣,兩個值都必須為真,結果才能為真。
x or y - 至少一個條件必須為真。
has_cash = False
has_credit_card = True
can_pay = has_cash or has_credit_card # 結果:True
例如,付款時,可以使用現金或信用卡;你需要其中一個為真。
x == y - 檢查兩個值是否相同
password = "secret123"
entry = "secret123"
is_correct = password == entry # 結果:True
這就像檢查兩把鑰匙是否相同。
x != y - 檢查兩個值是否不同
expected_price = 100
actual_price = 90
price_changed = expected_price != actual_price # 結果:True
這就像檢查某事物是否不同,例如注意到價格與預期不同。這些運算符可以幫助您做出邏輯布林值決策。
在智慧合約中使用數字時,Vyper 提供了兩種處理整數的基本方法:有符號整數和無符號整數。每種方法都有其特定的用途,了解它們的差異對於編寫高效且安全的程式碼至關重要。
有符號整數可能是 Vyper 中用途最廣泛的數字類型,能夠表示正值和負值。想像銀行帳戶-您可以進行存款(正數)和提款(負數)。這就是有符號整數大放異彩的地方。當您聲明一個變量,例如 age: int8 = -5 時,您正在告訴 Vyper 預留 8 位元空間,該空間可以容納 -128 到 127 之間的任何數字。
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
對於較大的值,Vyper 提供了更大的儲存容量。 int256 類型通常用於大量的數值運算,可以處理更大的數字。考慮追蹤公司的損益:balance: int256 = 1000。這可以表示任一方向上的大量財務變動。
現實世界中的某些數值永遠不會是負數。您不能有 -3 個蘋果或 -5 個使用者。這就是無符號整數發揮作用的地方。像 quantity: uint8 = 255 這樣的聲明非常適合庫存系統或使用者計數。
uint8 類型有效地使用 8 位元來儲存 0 到 255 之間的值,使其成為小型正數的理想選擇。
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
Vyper 中最常使用的無符號整數是 uint256。當您編寫 price: uint256 = 1000 時,您將建立一個可以容納巨大正數的變量,非常適合代幣數量或以太坊交易中的 wei 值。
當您需要使用小數點進行精確計算時
<code># 有符号整数(可以为正数或负数) age: int8 = -5 # 存储范围为 -128 到 127 balance: int256 = 1000 # 较大的范围用于更大的数字</code>
我們每天都會使用地址來識別位置—您的家、商店或朋友的家。在以太坊世界中,地址的工作方式類似,但它們並非指向實體位置,而是指向數位錢包和智能合約。讓我們探討一下這些地址的獨特性以及它們在 Vyper 中的工作方式。
什麼是以太坊地址?
<code># 无符号整数(只有正数) quantity: uint8 = 255 # 存储范围为 0 到 255 price: uint256 = 1000 # 常用于存储大型正数</code>
將以太坊地址想像成一個獨特的數位郵箱。就像您的家庭住址確保郵件只到達您手中一樣,以太坊地址確保加密貨幣和數位資產到達其預期的目的地。在 Vyper 中,我們使用稱為 address 的特殊類型來處理這些位址。
當您撰寫類似以下內容時:
<code>price: decimal = 19.99 # 适用于财务计算 tax_rate: decimal = 0.15</code>
您正在建立一個只能儲存有效以太坊地址的變數。這些位址始終以「0x」開頭,後面跟著 40 個由數字 (0-9) 和字母 (a-f) 組成的字元。
現實世界中的範例 假設您正在建立一個簡單的數位錢包合約。您可以像這樣儲存位址:
<code>owner: address = 0x123... # 存储钱包地址 contract: address = 0xABC...</code>
使用地址 Vyper 中的位址具有特殊屬性。您可以檢查以下內容:
例如,檢查地址的餘額就像這樣簡單:
<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
地址幫助我們瀏覽區塊鏈,確保我們的數位資產和互動安全可靠地到達其預期目的地。
在 Vyper 中,位元組數組用於處理原始二進位資料。將它們想像成用於儲存電腦可以直接處理的資訊的容器。位元組數組在處理檔案、加密雜湊或二進位運算時特別有用。
<code># 钱包的所有者 owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F # 可靠的备份地址 backup_wallet: address = 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199</code>
靜態位元組數組 靜態位元組數組具有固定大小,無法變更。這使其簡單且高效。
範例:儲存固定大小的雜湊值 假設您有一個唯一的程式碼,例如始終為 32 個位元組長的指紋。以下是如何在 Vyper 中儲存它。
fixed_code: bytes32 這表示 bytes32 將始終為 32 個位元組。
動態位元組數組
如果動態位元組陣列不超過最大大小,則可以容納不同長度的資料。它有助於儲存諸如簡短訊息之類的內容。
範例:儲存簡短訊息 假設您想保存一條訊息,例如“Hello, World!”,其長度最多可達 100 個位元組:
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
好了,今天學習就到這裡。我們的下一篇文章將檢查更多資料類型,並了解它們的功能。
要閱讀更多上述內容,請查看 Vyper 文件和 Vyper 範例。
以上是Vyper 資料型態(系列 2)的詳細內容。更多資訊請關注PHP中文網其他相關文章!