加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > MEXC > Info

Solidity極簡入門第十講:控制流、用solidity實現插入排序_SOL:SOLID

Author:

Time:1900/1/1 0:00:00

這一講,我們將介紹solidity中的控制流,然后講如何用solidity實現插入排序,一個看起來簡單,但實際上很容易寫出bug的程序。

我最近在重新學solidity,鞏固一下細節,也寫一個「Solidity極簡入門」,供小白們使用,每周更新1-3講。

所有代碼和教程開源在github:github.com/AmazingAng/WTFSolidity

這一講,我們將介紹solidity中的控制流,然后講如何用solidity實現插入排序,一個看起來簡單,但實際上很容易寫出bug的程序。

控制流

Solidity的控制流與其他語言類似,主要包含以下幾種:

Solana總鎖倉量為25.7億美元 24小時跌幅5.18%:金色財經消息,據L2BEAT數據顯示,當前Solana總鎖倉量為25.7億美元,24小時跌幅5.18%。其中,鎖倉量前五分別為Marinade Finance(3.24億美元,7日漲幅10.67%)、Solend (SLND)(2.68億美元,7日跌幅2.49%)、Serum (SRM)(2.47億美元,7日漲幅1.13%)、Raydium (RAY)(2.11億美元,7日跌幅2.43%)、Atrix(1.95億美元,7日跌幅0.54%)。[2022/8/3 2:57:14]

if-else

Solana鏈上NFT應用Primitives完成400萬美元種子輪融資,Redpoint領投:5月25日消息,Solana鏈上NFT應用Primitives宣布完成400萬美元種子輪融資,本輪融資由Redpoint領投,Union Square Ventures、Harlem Capital、Stellation Capital等參投。Primitives提供了一個有趣、易于使用的移動網站,幫助用戶免費創建和共享NFT。此外,Primitives還內置了一個原生加密錢包讓用戶保存NFT。[2022/5/25 3:41:39]

for循環

Dune Analytics新增支持Solana鏈上數據,目前處于測試階段:2月17日消息,區塊鏈分析機構 DuneAnalytics 宣布新增支持 Solana 鏈上數據,目前處于測試階段,未來幾周內將會有更新和改進。目前已發布的數據包括 Solana 生態系統的完整區塊歷史記錄「Solana.blocks」、交易數據(包括調用程序和帳戶活動)「Solana.transactions」、Solana 上支付的獎勵「Solana.rewards」等。[2022/2/17 9:57:35]

while循環

動態 | Coinbase Custody宣布將支持GRM、SOL和OXT的安全存儲:Coinbase博客發文稱,在GRM(Telegram開源網絡代幣)、SOL和OXT區塊鏈網絡上線時,Coinbase Custody將支持對其安全存儲。同時表示,Coinbase Custody為Blockstack和Algorand最大托管人。[2019/10/10]

do-while循環

三元運算符

三元運算符是solidity中唯一一個接受三個操作數的運算符,規則條件?條件為真的表達式:條件為假的表達式。此運算符經常用作if語句的快捷方式。

另外還有continue和break關鍵字可以使用。

用solidity實現插入排序

寫在前面:

90%以上的人用solidity寫插入算法都會出錯。插入排序

排序算法解決的問題是將無序的一組數字,例如,從小到大一次排列好。插入排序是最簡單的一種排序算法,也是很多人學習的第一個算法。它的思路很簡答,從前往后,依次將每一個數和排在他前面的數字比大小,如果比前面的數字小,就互換位置。示意圖:

插入排序

python代碼

我們可以先看一下插入排序的python代碼:

改寫成solidity后有BUG!

一共8行python代碼就可以完成插入排序,非常簡單。那么我們將它改寫成solidity代碼,將函數,變量,循環等等都做了相應的轉換,只需要9行代碼:

那我們把改好的放到remix上去跑,輸入。BOOM!有bug!改了半天,沒找到bug在哪。我又去google搜」solidityinsertionsort」,然后發現網上用solidity寫的插入算法教程都是錯的,比如:SortinginSoliditywithoutComparison

正確的solidity插入排序

花了幾個小時,在Dapp-Learning社群一個朋友的幫助下,終于找到了bug所在。solidity中最常用的變量類型是uint,也就是正整數,取到負值的話,會報underflow錯誤。而在插入算法中,變量j有可能會取到-1,引起報錯。

這里,我們需要把j加1,讓它無法取到負值。正確代碼:

運行后的結果:

總結

這一講,我們介紹了solidity中控制流,并且用solidity寫了插入排序。看起來很簡單,但實際很難。這就是solidity,坑很多,每個月都有項目因為這些小bug損失幾千萬甚至上億美元。掌握好基礎,不斷練習,才能寫出更好的solidity代碼。

原文:《Solidity極簡入門:10.控制流,用solidity實現插入排序》

來源:panews

Tags:SOLDITLIDSOLIDsol幣未來價格預估Radditarium NetworkLido DAO TokenVSolidus

MEXC
金色觀察 | 美國加密貨幣監管框架_加密貨幣:BTC

原文標題:《TheUnitedStatesCryptoRegulationFramework》原文作者:MykytaGrechyna原文編譯:Willis.

1900/1/1 0:00:00
探討七種數據消息傳遞橋的設計、安全性和信任假設_ELA:LAR

原文作者:ArjunChand,由DeFi之道翻譯編輯。 介紹 根據我們與開發人員交談、與用戶互動的經驗,“跨鏈橋”一詞似乎已成為“代幣橋”的同義詞——意味著流動性網絡或可信賴的第三方促進代幣X.

1900/1/1 0:00:00
金色圖覽 | NFT交易市場TOP3周報(9.18 - 9.24)_BTC:filecoin幣怎么挖

周報概要: 1、上周NFT市場成交量有所回落,較上周下降約-9.7%;其中X2Y2周成交額持續位居榜首,份額占比45.8%.

1900/1/1 0:00:00
金色觀察|GameFi的發展路徑_EFI:P2E

P2E是GameFi1.0,那么P&E是2.0?AxieInfinity在2021年初的持續流行,讓一個詞火了——P2E.

1900/1/1 0:00:00
以太坊的模塊化未來:通向世界計算機之路_以太坊:blok幣發行總量

站在2022年的當下看Crypto的發展趨勢,在這個時候去做一個L1新公鏈難免有點牽強,模塊化區塊鏈的敘事不可忽視.

1900/1/1 0:00:00
Biteye 周年慶嘉賓金句集錦 邀您一起掉進Web3「兔子洞」_WEB:DAO

自8月9日來,Web3學習型社區Biteye開啟了為期五周的「周年慶&品牌升級」主題活動,圍繞DeFi、公鏈、Web3、NFT和DAO五個領域.

1900/1/1 0:00:00
ads