关于truffle Compile编译sol报错分析

Truffle Compile编译sol会经常遇到报错,特别是初次写Helloworld的同学们。那么我们一起分析一下sol文件创建规则,再到编码报错修改问题,本人也是以太坊编程技术和产品开发学习者,本文细节原创(作者:ETHRobinY):

Data location must be “memory” for return parameter in function, but none was given.

function sayHello() public view returns(string)

…(提示太多不附带了)

这是因为solidity语言更新到0.5.0版本以上的原因,所以2018年的教程大部分都没法能正常编译。这时候只要在returns (string)后面加上memory就好了。
从程序角度,我们要退回到contract合约文件的创建,再到代码内容出入。
1、contract合约文件很多同学喜欢在本地目录人工创建,但是这是不科学的。正确的手工做法是,使用truffle自带的create指令创建,代码如下:
我们需要手动增加一个合约helloworld.sol, 我们可以进入contracts目录,然后通过命令创建一个helloworld.sol,而不是直接新建一个helloworld.sol文件。先CMD调出console面板,完毕进入你的测试工程根目录,如下所示操作:

cd contracts
truffle create contract HelloWorld

完毕在contracts目录里成功创建了一个HelloWorld.sol的文件,注意字母大小写。
剩余打开此sol文件,复制如下代码:

pragma solidity ^0.5.0;

contract HelloWorld {
  
  constructor() public{

  }
  string sayhi="HelloWorld~Success";
  	function sayhello() public view returns (string memory) {
        return sayhi;
      }
}

function sayhello() public view returns (string memory) 代码主要是这里有了变化在0.5.0版本之后。不过经过测试,建议采用view而不是pure,使用pure依然可能带来各种报错。
其次就是returns(string)变化为returns (string memory)。主要区别是在这里。好了剩余就是truffle compile编译合约,就可以成功了,剩余就是迁移合约migrate步骤了。这里就不单独论述了。如果有其他报错可以留言交流。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值