这一讲,我们将介绍solidity中的控制流,然后讲如何用solidity实现插入排序,一个看起来简单,但实际上很容易写出bug的程序。
我最近在重新学solidity,巩固一下细节,也写一个「Solidity极简入门」,供小白们使用,每周更新1-3讲。
所有代码和教程开源在github:github.com/AmazingAng/WTFSolidity
这一讲,我们将介绍solidity中的控制流,然后讲如何用solidity实现插入排序,一个看起来简单,但实际上很容易写出bug的程序。
控制流
Solidity的控制流与其他语言类似,主要包含以下几种:
SEC将SOL、ADA、MATIC、FIL、ATOM、SAND等列为证券:6月5日消息,SEC 在针对 Binance 的诉讼文件中提到,被列为证券的加密货币包括但不限于 BNB、BUSD 以及以下各种加密资产:SOL、ADA、MATIC、FIL、ATOM、SAND、MANA、ALGO、AXS 和 COTI。[2023/6/6 21:17:46]
if-else
for循环
Solana生态钱包Phantom正式上线Android版本:金色财经消息,Solana生态钱包Phantom宣布其Android版本正式上线,用户现已可登陆Google Play商店进行下载,并计划在未来几个月内围绕NFT推出新功能。[2022/4/19 14:32:45]
while循环
do-while循环
21Shares宣布在SIX Swiss Exchange上线Solana ETP等产品:3月10日消息,ETP发行商21Shares宣布在SIX Swiss Exchange上线以瑞士法郎计价的Cardano、Polkadot、Ripple、Solana ETP。
21Shares声称,其实物支持的Ripple XRP ETP是首个Ripple ETP产品,交易代码为AXRP。(Cryptoglobe)[2022/3/10 13:49:27]
三元运算符
三元运算符是solidity中唯一一个接受三个操作数的运算符,规则条件?条件为真的表达式:条件为假的表达式。此运算符经常用作if语句的快捷方式。
研究:Solana自动做市商性能领先于以太坊等主流公链:3月3日消息,Dragonfly Research的一项实验通过测试六种主流区块链的自动做市商性能,最终发现Solana的Orca DEX在每秒交易数方面明显领先。Orca DEX每秒管理273.34笔交易,每590毫秒创建一个新区块。BNB Chain紧随其后,在PancakeSwap上每秒交易数为194.6笔,其次是Polygon、Avalanche、Celo,最后是以太坊。
研究人员“GM”的一篇博客文章认为,虽然以太坊EVM兼容链上构建了一个丰富的生态系统,但结果表明,如果你现在想要真正的高性能,你必须关注EVM之外的领域。在这篇博文的早期版本中还建议用户最终需要“放弃EVM”(此部分内容现已被删除)。GM的结论是,随着时间的推移,其他Layer 1区块链将超越EVM兼容链。(Cointelegraph)[2022/3/3 13:34:38]
另外还有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
标签:SOLDITSOLIDLIDsolanium币前景StarCreditsVSolidusLido Staked ETH
如何理解Zk和OptimisticRollups的前景和区别? 撰写:Salazar.eth推文编译:深潮TechFlow人们说,如果能有一个更新,能将ETHL1的TPS提高100倍.
60岁的“星爷”周星驰要进军元宇宙了?谁能想到,向来低调的他首次注册社交账号,竟是为了发布一条招人信息,挑选的还不是新片男女主角,而是Web3人才,一脚跨界到了互联网科技领域.
原文标题:《ForesightVentures:第二代OptimisticRollup》原文作者:msfew.
吴说作者?|?刘全凯 本期编辑?|?ColinWu近几日,自称是谷歌第21号员工JackLevin创立的项目XENCrypto在海内外社区引起了FOMO.
原文:《宏观与通胀叙事下,我们正处在市场的哪一阶段?》作者:JerryShang流动性匮乏的市场,正在等待美联储的信号.
10月20日消息,模块化区块链网络Celestia完成5500万美元融资,BainCapitalCrypto和PolychainCapital领投.