【问题描述】
以下是我写的Helloworld.sol 代码段,
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;
contract Helloworld
{
string public greet = "Hello World! ";
string public name;
function sayHello(string memory _name) public pure returns(string memory){
return "Hello, " + _name; // compile fail.
}
function setName(string memory _name) public {
name = _name;
}
function getName() public view returns(string memory) {
return name;
}
}
使用Truffle编译后结果如下:
提示:没有 + 运算符。
【问题分析】
原本以为solidity和大部分的javascript的语法一样,应该会有字符串合并的操作,结果令人大失所望。于是求助百度,看到的解决方案都是转化为字节流处理,虽然能实现,这种方式感觉太low了,不符合对一种新语言的追求。于是又继续寻找其他解决方案。
【问题解决】
终于找到一种全新的解决方案,如下:
As of Feb 2022, in Solidity v0.8.12
you can now concatenate strings in a simpler fashion!
string.concat(s1, s2)
2022年2月份开始,Solidity v0.8.12版本支持string.concat操作。
于是试一下,代码修改如下:
编译成功!