比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

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

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基金會發布3月驗證者健康報告:擬招募質押生態系統負責人:金色財經報道,Solana基金會官方發布2023年3月驗證者健康報告,其中指出Solana是目前世界上節點數最多的權益證明網絡之一,也是中本聰系數分布最多的網絡之一,全球分布3000多個共識和RPC節點。此外,Solana基金會表示作為一個多驗證者客戶端網絡,目前已有兩個客戶端投產運行,第三個客戶端正在開發中。在過去的120天里,來自多個組織的104位核心貢獻者向Solana網絡的Github提供支持,Solana基金會還透露將會招募一位質押生態系統負責人。[2023/3/24 13:22:56]

if-else

Solana生態算法穩定幣UXD Protocol在新公鏈Sei上推出UXD:9月20日消息,專注于DeFi的新公鏈Sei今日宣布,Solana生態算法穩定幣UXD Protocol正在新公鏈Sei上推出UXD。Sei表示,作為DeFi的基本組成部分,UXD穩定幣的集成將為Sei用戶提供無需許可、去中心化且穩定的記賬單位。此外,UXD為在Sei上部署第一個Cosmos原生穩定幣。[2022/9/20 7:07:45]

for循環

while循環

Solana生態開發者:Bonfida疑似擁有所有.sol域名控制權:據Solana Dappio Wonderland團隊成員表示,Solana去中心化交易平臺Bonfida擁有所有Solana域名.sol的轉移與改變權。據其表示,所有在Bonfida購買的.sol域名是sol的子域名,數天前Bonfida對域名系統做了更新,顯示母域名可以有權轉移和改變任意子域名,即Bonfida目前可以有權修改或轉移任意.sol域名。[2022/2/3 9:29:06]

do-while循環

SoluTech及其聯合創始人因進行未經注冊的ICO被處以罰款和停止令:金色財經報道,已經倒閉的區塊鏈公司SoluTech已與美國證券交易委員會(SEC)就欺詐和違反證券規定的指控達成和解。SEC在周五發布的行政文件中對SoluTech及其聯合創始人Nathan Pitruzzello就進行未經注冊的SCRL代幣ICO處以罰款和停止令。據悉,該公司在2018及2019年期間通過ICO籌集了240萬美元。[2020/9/26]

三元運算符

三元運算符是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:SOLSOLIDDITLID2023年sol幣最新消息VSolidusNeos CreditsSolidblock

以太坊交易
XEN:金色觀察 | 以太坊Gas挖礦XEN火了 11個問題讀懂

2022年10月9日一開始,加密社區都在談論XEN。因為據ultrasound.money數據,XEN上線僅7個小時,XEN燃燒的ETH就達到1300枚ETH.

1900/1/1 0:00:00
區塊鏈:金色Web3.0日報 | 蘋果新政策將允許NFT市場通過Apple Pay出售NFT

DeFi數據 1.DeFi代幣總市值:463.4億美元 DeFi總市值數據來源:coingecko2.過去24小時去中心化交易所的交易量39.

1900/1/1 0:00:00
DAO:關于DAO 的主要經驗教訓:創建、實踐與文化

作者:LindaXie? 翻譯:Gink? 去中心化自治組織是一個圍繞特定使命組織起來的團體。DAO通過一套在區塊鏈上執行的共享規則進行協作.

1900/1/1 0:00:00
WEB:伊藤潤二將推出《富江》系列的NFT 被粉絲痛批

當上萬圣節的檔期,日本傳奇恐怖漫畫家伊藤潤二即將推出《富江》系列的NFT產品,不過此消息傳出后,粉絲激烈反對,官推被差評所淹沒.

1900/1/1 0:00:00
ETH:質押即服務:一個蓄勢待發的加密新興賽道

來源:加密資產管理公司Bitwise編譯及整理:比推MaryLiu以太坊已完成了一項名為合并的技術升級,將網絡的共識機制從工作量證明變為了權益證明.

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

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

1900/1/1 0:00:00
ads