译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
Solidity是以太坊区块链默认使用的智能合约语言,本文讨论了Solidity中使用合约和库函数时的gas消耗。
背景
在Datona实验室的身份合约模板开发过程中,我们希望提供一些有用的错误信息,就需要一些字符串操作,如字符串连接,例如:
functionTransferTo(address_address,uintamount)publiconlyOwner{require(amount<=unallocated,concat("Invalidamount.""Available:",stringOfUint(unallocated)));//whatever}
区块链隐私计算平台Oasis集成Chainlink作为首选预言机提供商:据Chainlink微博消息,区块链隐私计算平台Oasis正在集成Chainlink作为其首选预言机提供商。通过引用Chainlink的数据和价格预言机,将确保链外信息的完整性,也能增强建立在Oasis网络的智能合约应用。Oasis网络最初将利用Chainlink的价格参考数据,为DeFi应用提供广泛的价格源。[2020/11/17 21:03:03]
在Solidity编译器中,字符串连接是很方便的:
stringmemoryresult=string(abi
functionExternal(stringmemorysm0,stringmemorysm1)publicpurereturns(stringmemory){returnstring(abi
}
这里的函数名有点特别,只是为了这篇文章而取的,每一个函数都实现了字符串连接,我们关注的是不同连接选项的性能。
为了能正常使用函数,我们必须实现一个继承合约:
contractMyContractisBase{//whatever}
这些函数可以通过点符号来访问,或者直接省略掉基类合约的名字(你公司的代码标准文档也许有自己的一些规定)
stringmemorysm=Base.Internal("pass","word");stringmemoryxx=Internal("what","ever");
(4)访问组件合约
组件合约被声明为合约的一个组成部分,必须在声明时或在构造函数中创建。
contractComponentisBase{//inheritthebasefunctions}contractMyContractiswhatever{Componentcomponent=newComponent();//whatever}
这些函数必须使用点符号来访问。
stringmemorysm=component.Internal("mean","while");
(5)和(6)访问库合约
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
登链社区
现已在非小号资讯平台发布105篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10146444.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
巨鲸的资金涌向哪里,哪里就是热点!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。