比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

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

Author:

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

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

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

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

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

控制流

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

Sui日活躍地址數量超過Ethereum與Solana:金色財經報道,據artemis數據顯示,Sui日活躍地址數量目前超過Ethereum與Solana,截至發稿時,Sui目前的日活躍地址數量為30.7萬,Ethereum為30.6萬,Solana為24.8萬。[2023/7/30 16:06:47]

if-else

for循環

Solana網絡今日凌晨出現分叉事故導致交易處理受限:金色財經報道,紐約時間周日清晨,Solana網絡經歷分叉事件,限制了用戶執行交易和轉賬的能力,導致網絡每秒處理約93個交易,遠低于分叉前網絡接近5000TPS的速度。

目前驗證者和Solana工程師正在討論備選計劃,包括可能的Solana網絡重啟或軟件降級,目前尚未達成共識。(Coindesk)[2023/2/25 12:28:59]

while循環

do-while循環

SOL突破100美元,創歷史新高:歐易OKEx數據顯示,SOL 突破100美元,創歷史新高,現報100.16美元,24小時漲幅達 7.86%。此外,DeFi Llama數據顯示,Solana的總鎖倉量超30億美元。行情波動較大,請做好風險控制。[2021/8/30 22:46:07]

三元運算符

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

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

Scalable Solutions集成Mercuryo作為法幣網關:歐洲加密貨幣支付處理提供商Mercuryo今天宣布與Scalable Solutions建立新的戰略伙伴關系,Scalable Solutions是一個提供機構級交易軟件的區塊鏈平臺。該公司剛剛集成了Mercuryo的支付網關,使Scalable生態系統中的加密貨幣項目能夠使用Mercuryo的加密網關。從現在開始,與Scalable Solutions合作的商戶可以提供一系列加密貨幣的交易,包括BTC、ETH、USDT和其他幾種貨幣。該網關支持所有高需求的法定貨幣,如美元、歐元、英鎊、俄羅斯盧布、土耳其里拉和烏克蘭格里夫納。除了Scalable Solutions,幣安、Trust Wallet、Bitfinex、Bybit等交易所也集成了Mercuryo的支付網關。(Crypto Ninjas)[2020/12/30 16:04:18]

用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:SOLSOLIDLIDDITMSOL幣MOSOLIDSOLID幣Ripio Credit Network

幣安交易所app下載
KLAY:Layerzero:常被誤認為跨鏈橋的協議層產品_ZERO

在剛剛過去的這輪長達兩年的牛市中,市場不但見證了多鏈生態的迅速崛起,更直接目睹了眾多跨鏈橋產品的迅速爆發.

1900/1/1 0:00:00
OIN:Coinlive對孫宇晨的獨家采訪:漫長的前路_SMPCOIN

金色財經獨家合作媒體Coinlive在Token2049會議期間對孫宇晨進行了獨家采訪。區塊鏈技術和加密貨幣為許多人打開了進入門檻低的替代價值存儲的大門為了增加全球對加密貨幣的采用,仍然需要開展.

1900/1/1 0:00:00
ETH:Gas費真的越低越好嗎?_以太坊交易所

原文標題:《HowhighdowewantgasfeestobeonEthereum?》原文作者:mhonkasalo 對ETH持有者來說.

1900/1/1 0:00:00
OST:紅杉資本:生成式AI 一個創造性的新世界_CHURCH

撰文:SonyaHuang和PatGrady 編譯:深思圈 AIGC是最近一個熱門的話題,伴隨著大量應用的落地,AI生成圖片、文字、音頻甚至視頻等內容也漸漸走入了人們的日常.

1900/1/1 0:00:00
BAN:Bankless:淺談熊市下值得關注的5個領域_NFT

原文作者:BenGiove原文來源:Bankless市場正處于動蕩之中,監管的鎖鏈正在收緊,對區塊空間的需求是2019年以來的最低點,今年最大的事件——合并,也已經結束.

1900/1/1 0:00:00
加密貨幣:金色觀察|Coindesk:加密行業如何通過美元強勢“海嘯”進行交易_OIN

傳統觀點認為,如果美元走強,加密貨幣等資產就會變得更便宜。然而事實果真如此嗎?在過去的一周里,美聯儲做了許多人預期的事情:將聯邦基金利率提高了75個基點——這是美聯儲連續第三次加息.

1900/1/1 0:00:00
ads