買比特幣 買比特幣
Ctrl+D 買比特幣
ads

SOL:Solidity極簡入門第十講:控制流、用solidity實現插入排序_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的控制流與其他語言類似,主要包含以下幾種:

全球視頻游戲商務公司Xsolla與Crypto.com宣布建立合作伙伴關系:金色財經報道,全球視頻游戲商務公司Xsolla和全球加密貨幣平臺Crypto.com宣布建立合作伙伴關系,將Crypto.com的結賬解決方案集成到Xsolla的Pay Station平臺中。[2023/8/10 16:17:16]

if-else

for循環

Solana NFT上線Instagram和Facebook:11月5日消息,Solana宣布,Instagram和Facebook已與Solana區塊鏈集成,以允許用戶展示他們的NFT。[2022/11/6 12:21:26]

while循環

do-while循環

三元運算符

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

電競俱樂部G2 Esports將推出Solana NFT作為粉絲的會員通行證:1月20日消息,電子競技俱樂部G2 Esports將于2月發布基于Solana的NFT。G2的Samurai Army NFT將使用Solana的Metaplex協議鑄造,總共6,262個NFT中的每一個都具有隨機生成的個人資料圖片。Samurai Army NFT也被稱為G2 Esports獨家會員計劃的通行證,可以與其他用戶一起進入社交俱樂部,與G2的專業電子競技玩家互動,提前獲得未來的G2 NFT空投等。(Decrypt)[2022/1/20 9:00:56]

Coinbase:正在調查SOL存款和取款延遲問題:官方消息,加密貨幣交易所Coinbase表示,正在調查SOL存款和取款延遲問題。[2021/7/7 0:32:35]

另外還有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:SOLDITLIDSOLIDSolareumLBRY CreditsSolidblockSOLID價格

火幣APP下載
SDC:觀察:穩定幣王者之戰——Tether、Circle和Binance_怎么挖usdt幣

文/Forgiven,原發作者推特1、美元穩定幣發行量約在1500億美元,800億美元購買短期美國國債.

1900/1/1 0:00:00
TOR:合并后時代:以太坊新共識的破局重生_ATOR

撰文:FrankFan、0xCryptolee,ArcaneLabs「只要勇于做出承諾,世界自會助你鏟除不可逾越之障礙。去完成未竟之夢想,宇宙絕不會抑制你前進的步伐,這即是奧義所在.

1900/1/1 0:00:00
WEB3:美國中期選戰升溫中 四大搖擺州的 Web 3選民群像_METAWEB3PA幣

來源:HaunVentures編譯:比推BitpushNewsMaryLiu在HaunVentures,我們認為新事物需要新規則是我們倡導Web3的核心.

1900/1/1 0:00:00
ZIL:金色觀察 | Zilliqa的Web3游戲機準備好與PlayStation和Xbox競爭了嗎?_區塊鏈

金色財經報道?區塊鏈9月23日訊?Layer1區塊鏈公司Zilliqa宣布推出Web3Console游戲機,這款設備支持基于Zilliqa協議的游戲、Web3錢包和挖礦APP.

1900/1/1 0:00:00
WEB:如何構建一款殺手級的Web3社交媒體平臺?_TOK

原文標題:《LivepeerCEO:如何構建一款殺手級Web3社交平臺?》原文作者:DougPetkanics 原文編譯:白澤研究院 自2016年以太坊崛起以來.

1900/1/1 0:00:00
COI:資料:使DAO具有粘性的四個因素_SCO

對“傳統”員工滿意度的研究一再表明,工作中有五個關鍵因素(可以這么說):任務樂趣、對任務重要性的理解、員工、反饋文化和成長機會.

1900/1/1 0:00:00
ads