以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > NEAR > Info

LID: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鏈上NFT交易額突破14億美元:金色財經報道,最新數據顯示Solana鏈上NFT交易總額已突破14億美元,本文撰寫時為1,402,164,057美元,鏈上交易量達到1,589,711筆。當前Solana區塊鏈上NFT交易額最大的NFT項目是Solana Monkey Business,交易額為174,640,992美元,其次是Degenerate Ape Academy,交易額為129,713,592美元,這兩個NFT項目交易額已超過Solana鏈上交易總額的五分之一。[2022/3/28 14:23:04]

if-else

Solana生態AMM協議Cyclos將在Cropper推出CYS-USDC農場:11月7日消息,Solana鏈上收益耕作平臺Cropper Finance發推稱,Solana生態AMM協議Cyclos將在Cropper推出標簽化農場。CYS-USDC農場將提供CYS獎勵,將于UTC時間11月9日10:00開放,持續時間大約6個月。[2021/11/8 6:37:28]

for循環

while循環

Coinbase Institutional:過去一個月SOLUSD交易量呈指數級增長:9月10日消息,Coinbase Institutional發推稱,過去一個月SOLUSD交易量呈指數級增長。[2021/9/10 23:16:24]

do-while循環

三元運算符

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

動態 | 加拿大區塊鏈公司與Soluna合作 助其創建風力發電廠提供廉價挖礦能源:據Business Wire消息,加拿大區塊鏈公司DMG與Soluna達成合作。據悉,DMG將為Soluna提供硬件采購,數據中心設計,采礦設置,遠程硬件和系統監控以及所有必要的支持服務。據此前報道,Soluna計劃在摩洛哥撒哈拉沙漠中建造一個風力發電場,將會加密礦商提供約0.2元/度的廉價電力。[2018/9/15]

另外還有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:SOLLIDSOLIDDITsol幣的2023年前景SOLID價格Solidblockgamecredits

NEAR
REV:金色觀察 | 以太坊上逆轉NFT和代幣交易:ERC-20R和ERC-721R解讀

文/KailiWang,斯坦福大學區塊鏈交易的不可篡改性是把雙刃劍。BAYC網絡釣魚、PolyNetwork攻擊、Harmony橋、Ronin被盜,僅在2021年,就有140億美元的加密貨幣被盜.

1900/1/1 0:00:00
以太坊:以太坊新時代的崛起:偉大的工程

本周區塊鏈行業見證了一次歷史性的工程壯舉:以太坊合并。共識機制從工作量證明(PoW)到權益證明(PoS)的轉變一直存在于以太坊的戰略圖上,并且自創始以來一直在積極規劃,是該項目的一個非凡里程碑.

1900/1/1 0:00:00
WEB:三大明星公鏈創始人同臺對話 共議區塊鏈技術發展新趨勢

9月21日,在由萬向區塊鏈實驗室主辦的第八屆區塊鏈全球峰會——黃“金”時代主題論壇上,在HashKeyCapital首席執行官鄧超的主持下.

1900/1/1 0:00:00
USD:美國穩定幣法案將如何影響頂級的非中心化穩定幣

截至2022年9月,穩定幣占整個加密貨幣市值的15%左右,約為1500億美元。它被加密市場參與者大量使用,并已顯示出出色的產品市場契合度。在2017年的牛市周期中,穩定幣幾乎不存在.

1900/1/1 0:00:00
BAYC:2022 NFT大盤回顧與前瞻 誰能殺出重圍?

原文來源:Universe一年NFT大盤回顧:幾乎跌至冰點據NFT數據分析平臺NFTGO數據,最近一年來,NFT總市值在2022年2月22日、3月30日兩次見頂.

1900/1/1 0:00:00
NFT:華納音樂集團招聘元宇宙開發總監計劃推出虛擬宇宙

金色財經報道,美國華納音樂集團正在招聘至少兩名可以開發和管理與web3相關的項目的人。根據LinkedIn上的招聘信息,第一份工作需要為元宇宙品牌和平臺制定營銷計劃,并在元宇宙、web3游戲、A.

1900/1/1 0:00:00
ads