我听过关于乌德米的讲座。但我有个错误
这是我的“收件箱/合同/Inbox.sol”
pragma solidity ^0.4.17;
contract Inbox {
string public message;
function Inbox(string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}这里是一个“收件箱/编译程序”文件
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const inboxPath = path.resolve(__dirname, 'contracts','Inbox.sol');
const source = fs.readFileSync(inboxPath, 'utf8');
console.log(solc.compile(source, 1));在我在终端上编译这个文件之后
节点compile.js
有一个错误如下所示
errors:
[ ':6:5: Warning: Defining constructors as functions with the same name
as the contract is deprecated. Use "constructor(...) { ... }"
instead.\n function Inbox(string initialMessage) public {\n ^
(Relevant source part starts here and spans across multiple lines).\n' ],我用麦克。我做的一件事与讲座不同,那就是“npm”在其他文件夹中,而不是“收件箱”,我复制并粘贴了创建的所有文件到收件箱文件夹中。
发布于 2018-04-18 02:58:24
这应该是一个警告,而不是一个错误。无论如何,使用以下语法
function Inbox(string initialMessage) public {
message = initialMessage;
}在新版本的“稳固”中被废弃。您必须使用constructor而不是合同名称。
constructor(string initialMessage) public {
message = initialMessage;
}这将在没有警告的情况下编译。
发布于 2018-04-20 07:00:48
只需使用构造函数()就可以了。
constructor(string initialMessage) public {
message = initialMessage;
}如果您使用函数构造函数(.)..。我想你会收到以下警告:
警告:此函数名为“构造函数”,但不是契约的构造函数。如果您想让它成为构造函数,请使用“构造函数(.){. }”而不使用"function“关键字来定义它。
发布于 2021-12-16 08:38:59
在构造函数中声明字符串之类的参数时,不要忘记添加memory或storage
constructor(string memory initialMessage) {
message = initialMessage;
}https://ethereum.stackexchange.com/questions/45972
复制相似问题