Sebelum ini, kami telah membincangkan mengapa Vyper adalah pengubah permainan kerana ia merupakan salah satu bahasa pembangunan kontrak pintar yang paling pesat berkembang.
Kami juga merangkumi beberapa asas seperti Pragma dan Pembina. Anda boleh membacanya di sini.
Hari ini kita akan mendalami jenis data dan cara ia berfungsi.
Jenis data membantu kami menyusun maklumat yang berbeza dalam kod kami, sama seperti kami mengisih item ke lokasi tertentu di rumah.
Jenis ini ditetapkan sebelum program dijalankan. Sama seperti bekas yang direka bentuk untuk cecair tidak sesuai untuk menyimpan pepejal, setiap pembolehubah dalam Vyper hanya boleh menyimpan jenis data yang direka bentuk.
Apabila menulis kod, kita perlu menentukan jenis data yang akan dipegang oleh setiap pembolehubah - sama ada nombor untuk pengiraan, teks untuk nama atau benar/salah untuk keputusan mudah. Jenis ini memastikan program kami mengendalikan maklumat dengan betul, menghalang ralat seperti cuba mendarab nama seseorang atau menambah huruf bersama-sama.
Memahami jenis data dalam Vyper
Fikirkan nilai Boolean seperti suis lampu - ia hanya boleh berada dalam dua keadaan: benar atau salah. Kami menggunakannya dalam kod kami untuk membuat keputusan ya/tidak.
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
Pengendali tertentu boleh digunakan dengan berkesan dengan nilai boolean, termasuk tidak, atau == dan !=. Ini bermakna kita boleh menggunakannya untuk membuktikan kebenaran atau kepalsuan.
**运算符** | **描述** |
---|---|
not x | 逻辑否定 |
x and y | 逻辑合取 |
x or y | 逻辑析取 |
x == y | 相等 |
x != y | 不相等 |
bukan x - balikkan nilai benar/salah ke sebaliknya
dikunci_pintu = Benar
is_door_unlocked = not is_door_locked # Keputusan: Salah
Ia seperti berkata "bertentangan" - jika pintu dikunci, maka tidak berkunci bermakna ia terbuka.
x dan y - kedua-dua syarat mestilah benar
mempunyai_tiket = Benar
has_id = Benar
can_board_plane = has_ticket and has_id # Keputusan: Benar
Sama seperti anda memerlukan tiket dan ID untuk menaiki kapal terbang, kedua-dua nilai mesti benar untuk hasilnya benar.
x atau y - sekurang-kurangnya satu syarat mesti benar.
mempunyai_tunai = Palsu
has_credit_card = Benar
boleh_bayar = ada_tunai atau ada_kad_kredit # Keputusan: Benar
Sebagai contoh, apabila membayar, anda boleh menggunakan wang tunai atau kad kredit;
x == y - menyemak sama ada dua nilai adalah sama
kata laluan = "secret123"
entri = "rahsia123"
is_correct = kata laluan == entri # Keputusan: Benar
Ia seperti menyemak sama ada dua kekunci adalah sama.
x != y - menyemak sama ada dua nilai berbeza
harga_jangka = 100
harga_sebenar = 90
price_changed = expected_price != actual_price # Keputusan: Benar
Ini seperti menyemak untuk melihat sama ada sesuatu berbeza, seperti perasan bahawa harga adalah berbeza daripada yang dijangkakan. Pengendali ini membantu anda membuat keputusan Boolean yang logik.
Apabila menggunakan nombor dalam kontrak pintar, Vyper menyediakan dua kaedah asas untuk mengendalikan integer: integer bertanda dan integer tidak bertanda. Setiap kaedah mempunyai tujuan tertentu, dan memahami perbezaannya adalah penting untuk menulis kod yang cekap dan selamat.
Integer yang ditandatangani mungkin jenis nombor yang paling serba boleh dalam Vyper, yang mampu mewakili nilai positif dan negatif. Fikirkan akaun bank - anda boleh membuat deposit (nombor positif) dan mengeluarkan wang (nombor negatif). Di sinilah integer yang ditandatangani bersinar. Apabila anda mengisytiharkan pembolehubah seperti umur: int8 = -5, anda memberitahu Vyper untuk menempah 8 bit ruang, yang boleh memuatkan sebarang nombor antara -128 dan 127.
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
Untuk nilai yang lebih besar, Vyper menyediakan kapasiti storan yang lebih besar. Jenis int256 biasanya digunakan untuk sejumlah besar operasi berangka dan boleh mengendalikan nombor yang lebih besar. Pertimbangkan untuk menjejaki untung rugi syarikat: baki: int256 = 1000. Ini boleh mewakili pergerakan kewangan yang besar dalam kedua-dua arah.
Sesetengah nilai dalam dunia nyata tidak pernah negatif. Anda tidak boleh mempunyai -3 epal atau -5 pengguna. Di sinilah integer yang tidak ditandatangani dimainkan. Pernyataan seperti kuantiti: uint8 = 255 sesuai untuk sistem inventori atau pengiraan pengguna.
Jenis uint8 berkesan menggunakan 8 bit untuk menyimpan nilai antara 0 dan 255, menjadikannya sesuai untuk nombor positif yang kecil.
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
Integer tidak bertanda yang paling biasa digunakan dalam Vyper ialah uint256. Apabila anda menulis harga: uint256 = 1000 anda mencipta pembolehubah yang boleh memegang nombor positif yang besar, sesuai untuk bilangan token atau nilai wei dalam transaksi Ethereum.
Apabila anda perlu menggunakan titik perpuluhan untuk pengiraan yang tepat
<code># 有符号整数(可以为正数或负数) age: int8 = -5 # 存储范围为 -128 到 127 balance: int256 = 1000 # 较大的范围用于更大的数字</code>
Kami menggunakan alamat setiap hari untuk mengenal pasti lokasi - rumah anda, kedai atau rumah rakan. Dalam dunia Ethereum, alamat berfungsi dengan sama, tetapi bukannya menunjuk ke lokasi fizikal, alamat tersebut menunjuk kepada dompet digital dan kontrak pintar. Mari terokai perkara yang menjadikan alamat ini unik dan cara ia berfungsi dalam Vyper.
Apakah alamat Ethereum?
<code># 无符号整数(只有正数) quantity: uint8 = 255 # 存储范围为 0 到 255 price: uint256 = 1000 # 常用于存储大型正数</code>
Fikirkan alamat Ethereum anda sebagai peti mel digital yang unik. Sama seperti alamat rumah anda memastikan bahawa mel hanya sampai kepada anda, alamat Ethereum memastikan mata wang kripto dan aset digital mencapai destinasi yang dimaksudkan. Dalam Vyper kami menggunakan jenis khas yang dipanggil alamat untuk mengendalikan alamat ini.
Apabila anda menulis sesuatu seperti:
<code>price: decimal = 19.99 # 适用于财务计算 tax_rate: decimal = 0.15</code>
Anda sedang mencipta pembolehubah yang hanya boleh menyimpan alamat Ethereum yang sah. Alamat ini sentiasa bermula dengan "0x" diikuti dengan 40 aksara yang terdiri daripada nombor (0-9) dan huruf (a-f).
Contoh dunia sebenar Katakan anda sedang membina kontrak dompet digital mudah. Anda boleh menyimpan alamat seperti ini:
<code>owner: address = 0x123... # 存储钱包地址 contract: address = 0xABC...</code>
Gunakan alamat Alamat dalam Vyper mempunyai sifat istimewa. Anda boleh menyemak perkara berikut:
Sebagai contoh, menyemak baki alamat semudah ini:
<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
Alamat membantu kami menavigasi rantaian blok, memastikan aset digital dan interaksi kami sampai ke destinasi yang dimaksudkan dengan selamat dan boleh dipercayai.
Dalam Vyper, tatasusunan bait digunakan untuk memproses data binari mentah. Anggap mereka sebagai bekas untuk menyimpan maklumat yang boleh diproses secara langsung oleh komputer. Tatasusunan bait amat berguna apabila bekerja dengan fail, cincang kriptografi atau operasi binari.
<code># 钱包的所有者 owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F # 可靠的备份地址 backup_wallet: address = 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199</code>
Susun atur bait statik Tatasusunan bait statik mempunyai saiz tetap dan tidak boleh diubah. Ini menjadikannya mudah dan cekap.
Contoh: Menyimpan cincang saiz tetap Katakan anda mempunyai kod unik seperti cap jari yang sentiasa sepanjang 32 bait. Begini cara menyimpannya dalam Vyper.
fixed_code: bytes32 Ini bermakna bytes32 akan sentiasa menjadi 32 bait.
Susun atur bait dinamik
Susun atur bait dinamik boleh memuatkan data dengan panjang yang berbeza jika ia tidak melebihi saiz maksimum. Ia membantu dalam menyimpan kandungan seperti mesej ringkas.
Contoh: Simpan mesej ringkas Katakan anda ingin menyimpan mesej, seperti "Hello, World!", yang boleh mencapai sehingga 100 bait panjang:
<code>is_active: bool = True is_paused: bool = False # 可以翻转布尔值 is_active = not is_active # 现在是 False</code>
Baiklah, itu sahaja untuk kajian hari ini. Artikel seterusnya kami akan mengkaji lebih banyak jenis data dan memahami keupayaannya.
Untuk membaca lebih lanjut perkara di atas, lihat dokumentasi Vyper dan contoh Vyper.
Atas ialah kandungan terperinci Jenis Data Vyper (Siri 2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!