今天,在编译Solidity智能合约时,报"ParserError: Expected ‘;’ but got ‘{’"错误,如图(1)所示。
问题原因:.call()调用在不同的Solidity版本里,是不相同的。
解决方法:根据Solidity版本,来更改.call()写法。
![](https://img-blog.csdnimg.cn/c3cce86b64ed4445a9d8e5cc92cadc83.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2FucWltYQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
Solidity v0.5 以下版本
.call()写法如下:
(bool success,) = recipient.call.value(amount)("");
Solidity v0.6~v0.8版本
.call()写法如下:
(bool success,) = recipient.call{
value : amount}("");