以太坊智能合约开发第五篇:字符串拼接—Solidity
原文发表于:以太坊智能合约开发第五篇:字符串拼接—Solidity
上一篇,我们实现了一个简单的智能合约。用户输入什么字符串,合约就原样返回什么。在文章最后抛出了一个问题:如果我们事先在合约里定义好 Hello 字符串,如何与 name 变量进行字符串拼接?
在智能合约里进行字符串的拼接可不是一件简单的事情。本篇就来介绍智能合约里的字符串拼接。
尝试
我们先用绝大部分语言都通用的连接符 + 和 . 来尝试着修改代码:
//pragma关键字:版本申明。 //用来指示编译器将代码编译成特定版本,以免引起兼容性问题 //此处不支持0.4.0之前的编译器,也不支持0.5.0之后的编译器(条件为 ^) pragma solidity ^0.4.0; //contract关键字:合约申明 //和Java、PHP中的class类似 //此处是申明一个名为Hello的合约 contract Hello { string str="Hello "; //public: 函数访问属性(后续文章为详细阐述) //returns (string): 定义返回值类型为string function say(string name) public returns (string) { return str + name; } }
<!--more-->
运行 node deploy.js 部署脚本后,抛出了一个异常:
TypeError: Operator + not compatible with types string storage ref and string memory
return str + name;
我们将其修改为 . 并尝试部署后,也抛出一个异常:
TypeError: Member "name" not found or not visible after argument-dependent lookup in string storage ref return str . name;
说明在智能合约里,+ 和 . 都不是连接符。
通过查阅 Solidity 官方文档,我们发现 Solidity 语言并不提供字符串连接符的语法:
那有没有其他方式,可以实现字符串的拼接功能呢?
以下部分为付费用户专享福利,请点击链接跳转至我的专栏付费购买。通过阅读以下部分,你将学习到:
第三方字符串工具合约:字符串的扩展处理(查找、分割、比较、拼接等功能)
智能合约里第三方合约的引入
字符串的拼接实现
我的专栏:智能合约
智能合约开发QQ群:753778670
目前有几套区块链实践的视频课程(视频+源码),需要的可加我微信(kuangwenjie)私信我(付费):
- 『区块链』从零构建以太坊(Ethereum)智能合约到项目实战
- 基于Ethereum & IPFS的去中心化Ebay区块链项目开发实战
- HyperLedger(超级账本)Fabric
相关推荐
xceman 2020-09-22
bcbeer 2020-08-27
风萧萧梦潇 2020-08-17
夕加加 2020-07-20
LuckyDeng 2020-07-08
huangchunxia 2020-07-08
lbPro0 2020-07-05
葉無聞 2020-07-05
万里之书 2020-07-04
冰蝶 2020-07-04
yuzhongdelei0 2020-07-04
meiseeny 2020-06-28
RuoShangM 2020-06-28
bianxq 2020-06-28
80327065 2020-06-28
Codeeror 2020-06-28
somyjun 2020-06-25
xuanlvhaoshao 2020-06-16