宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 币安下载 > 正文

Solidity极简入门第十讲:控制流、用solidity实现插入排序

作者:

时间:1900/1/1 0:00:00

这一讲,我们将介绍solidity中的控制流,然后讲如何用solidity实现插入排序,一个看起来简单,但实际上很容易写出bug的程序。

我最近在重新学solidity,巩固一下细节,也写一个「Solidity极简入门」,供小白们使用,每周更新1-3讲。

所有代码和教程开源在github:github.com/AmazingAng/WTFSolidity

这一讲,我们将介绍solidity中的控制流,然后讲如何用solidity实现插入排序,一个看起来简单,但实际上很容易写出bug的程序。

控制流

Solidity的控制流与其他语言类似,主要包含以下几种:

if-else

Soluna Holdings宣布建立用于比特币挖矿和其他密集型计算应用的绿色数据中心:金色财经报道,Soluna Holdings首席执行官John Beliziare向股东发表了一封公开信,宣布建立用于比特币挖矿和其他密集型计算应用的绿色数据中心。

John Beliziare称,比特币在加密货币领域的突出地位及其对安全解决方案日益增长的需求使其非常适合我们的有限能源方法,而人工智能的兴起为我们公司提供了进一步增长和多元化的机会。[2023/6/23 21:55:15]

for循环

while循环

Helium已成功迁移至Solana中铸造近100万枚NFT:金色财经报道,去中心化无线网络Helium已经成功完成从Layer 1区块链平台到Solana的迁移工作。作为迁移过程的一部分,NFT将被铸造以代表运行在Helium网络上的每个物理热点节点,最终铸造了超过991000枚Solana NFT。

根据Solana基金会的说法,该过程将100万NFT的估计铸造成本降低到价值约113美元的SOL(截至4月5日)。相比之下,使用没有压缩技术的Solana估计铸造成本为价值25.3万美元的SOL,在Polygon上预计为价值约32800美元的MATIC。[2023/4/20 14:14:56]

Solana要求主网验证节点升级到v1.10.29版本:7月8日消息,Solana要求主网验证节点升级到v1.10.29版本。该版本是一个在Mainnet Beta上使用的稳定版本,更改包括将自定义版本HTTP标头字符串添加到RPC请求、检测并拒绝无效的AccountInfo重新分配、修复活动投票账户关闭错误等。[2022/7/9 2:01:26]

do-while循环

三元运算符

三元运算符是solidity中唯一一个接受三个操作数的运算符,规则条件?条件为真的表达式:条件为假的表达式。此运算符经常用作if语句的快捷方式。

Trisolaris获得450万美元融资 Electric Capital领投:金色财经报道,基于Near协议的去中心化交易所Trisolaris宣布了一项由Electric Capital牵头的战略投资,投资总额为450万美元。参与方包括JumpCrypto、DragonflyCapital、Leminscap和EtherealVentures等。Trisolaris将利用这笔资金扩大其团队,继续投资于关键产品领域。还计划改进原生TRI代币背后的代币经济学,并将该代币整合到更多Near生态系统项目中。

上周,Trisolaris推出了一款新的stableswap产品,允许用户通过一个界面在多个自动做市商(AMM)之间交换资金。(coindesk)[2022/4/5 14:04:12]

另外还有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

标签:SOLDITLIDSOLIDsolana币最新消息business-credit-alliance-chainSOLID价格Solidex

币安下载热门资讯
迪士尼艺术家全球独家首发「Fairyspell精灵女孩」数字头像

2020年被称为“人类社会虚拟化的临界点”,无数青年人在虚拟世界中进行开放式探索,通过创造性的游玩寻找与现实世界的连通,小红书R-SPACEFairyspell精灵女孩数字头像又再次敲开了Web3的大门.

1900/1/1 0:00:00
金色早报 | 以太坊“合并”后可能受到SEC的审查

头条 ▌以太坊“合并”后可能受到SEC的审查9月19日消息,据《华尔街日报》报道,以太坊近期从之前的PoW转向了PoS模式,这种将全球第二大加密货币归类为证券的做法可能引起了美国证交会主席根斯勒的注意.

1900/1/1 0:00:00
HistoryDAO:去中心化《史记》

当人人都是“司马迁”,是否能改写“历史由胜利者决定”的局面?作者:HistoryDAO9月15日,以太坊顺利完成了合并,其PoW的最后一个区块被VanityBlock铸造成了NFT.

1900/1/1 0:00:00
E.Glen Weyl | 去中心化社会:寻找Web3的灵魂

9月20日,由万向区块链实验室主办的第八届区块链全球峰会在上海举行。微软CTO经济学家及社会技术专家办公室研究员RadicalxChange创始人—E.GlenWeyl在其演讲中介绍了灵魂绑定代币.

1900/1/1 0:00:00
Binance Labs 更青睐哪些 Web3 项目?

在BinanceLabs管理数十亿美元投资组合的何一正在寻求投资Web3项目,从基础设施、应用、数据到分析和安全.

1900/1/1 0:00:00
集权还是去中心化?MakerDAO 的治理迷雾

1.MakerDAO的发展在稳定币DAI概念公布后的第六年,今天的MakerDao协议仍然是以太坊链上最成功的DeFi应用之一.

1900/1/1 0:00:00