買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > USDC > Info

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的控制流與其他語言類似,主要包含以下幾種:

幣安恢復Solana鏈上USDT充值業務:11月17日消息,幣安發布公告稱,經過內部評估和審查,幣安現已恢復USDT(Solana鏈)的充值。[2022/11/18 13:19:01]

if-else

for循環

while循環

Circle:Solana將增加對歐元穩定幣(EUROC)的支持:金色財經報道,穩定幣發行商 Circle宣布,Solana鏈將增加對歐元穩定幣(EUROC)的支持,遷移到 Solana 將改善鏈上外匯功能。Euro Coin于 6 月在以太坊區塊鏈上推出,由現金和歐洲政府債務混合支持。

EUROC目前市值僅為8000萬美元。USDC 的市值為 420 億美元。最大的穩定幣 Tether 的 USDT 市值為 690 億美元。[2022/11/7 12:28:20]

do-while循環

Polygon聯合創始人:受美國機構營銷的影響,Web3新人才覺得Solana比Polygon更有吸引力:1月9日消息,Polygon聯合創始人Sandeep Nailwal表示:“我覺得‘Solana比Polygon更有吸引力’的想法在新的Web3進入者中更為普遍,因為他們受到了美國機構營銷的影響”。事實上,Solana的DAU為18萬,200-300個活躍的開發團隊;Polygon的DAU為27萬,2000-3000個活躍的開發團隊。[2022/1/9 8:36:47]

三元運算符

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

PuddingSwap新增AVAX—USDT、SOL—USDT流動性礦池:據官方消息,HSC虎符智能鏈上項目PuddingSwap將于12月24日21:00(GMT+8)新增AVAX—USDT、SOL—USDT流動性礦池。

Avalanche(AVAX)是一個開源平臺,用于啟動高度分權的應用程序、新金融原語和新的可互操作的區塊鏈。

Solana是一種單鏈委托權益證明協議,其擴展解決方案的核心是名為“歷史證明(PoH)”的分散式時鐘,旨在解決分布式網絡中沒有單個可信賴時間源的時間問題。[2021/12/23 7:59:16]

另外還有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:SOLLIDSOLIDDITSOLDAOSolidexSOLID價格LYO Credit

USDC
NFT:KOLO.Market NFT二期發售即將開啟:精選音樂NFT等你來搶_OLO

作為世界首個以古典音樂為依托的NFT平臺,KOLO.Market愉快地宣布官方平臺即將迎來第二輪的NFT發售。白名單用戶最早可于10月12日8:00?UTC參與此次發售活動.

1900/1/1 0:00:00
區塊鏈:基于歷史指標看以太坊合并 它現在被定價了嗎?_加密貨幣

作者:LucasCampbell,來源:Bankless,本文由DeFi之道編譯上周,我們看到了以太坊合并工作順利完成。 對于加密貨幣歷史來說,這是一個具有里程碑意義的事件.

1900/1/1 0:00:00
FRA:解讀眾議院穩定幣法案草案 哪些穩定幣將面臨風險_gusd幣騙局

在Terra/UST這一套算法穩定幣體系崩潰之后,美國加強了對穩定幣的關注。9月21日,媒體上傳出了美國眾議院提出的穩定幣法案的相關內容,對類似于TerraUSD的算法穩定幣實施禁令.

1900/1/1 0:00:00
元宇宙:搶占元宇宙賽道:河南省發布最新行動計劃_GDP

繼上海、深圳、武漢、重慶、廈門、沈陽、北京等多地政府陸續出臺關于元宇宙的專項產業發展計劃后,河南省也正式加入其中.

1900/1/1 0:00:00
元宇宙:元宇宙教育的四大挑戰_元宇宙平臺公司

2022年9月,Meta和VictoryXR合作打造且開放了10個元宇宙的虛擬校園。該項目投資1.5億美元。Meta表示作為其沉浸式學習項目的一部分,該項目旨在將教育引入虛擬現實環境.

1900/1/1 0:00:00
Gnosis:Gnosis safe 101 指南:盤點Gnosis safe 生態工具現狀_Gnosis Safe

Gnosissafe是當今最受信任的數字資產管理平臺。它將智能合約賬戶作為web3的所有權標準來解鎖數字所有權.

1900/1/1 0:00:00
ads