我有一个拍卖合同,它应该运行20分钟。
为了方便起见,我有一个auctionEndTime
变量,我在constructor
中初始化如下:
auctionEndTime = block.timestamp + 20 minutes;
但是如果我想通过增加一些额外的分钟来更新auctionEndTime
呢?
我写了一个函数,可以让我传递我想要添加到auctionEndTime
变量的额外分钟的值,如下所示:
function changeAuctionEndTime(uint extraTimeAmount) public {
require(msg.sender == contractOwner, "ONLY THE CONTRACT's OWNER CAN CALL THIS FUNCTION!");
auctionEndTime += newEndTime minutes;
}
但是这马上给了我以下错误:
Expected ';' but got 'minutes'
在minutes
这个词下面有一条弯弯曲曲的红线。所以它显然不喜欢这里的东西。(请注意,这个错误立即出现-在,它不像我编译并得到这个错误,而是我甚至不能编译和运行代码。)
这是怎么回事?我该如何解决这个问题?
- 您的变量是
extraTimeAmount
而不是newEndTime
。 -
文字之后的后缀如
seconds
、minutes
、hours
、days
和weeks
数字可以用来指定时间单位。(来自官方文件). - 所以你需要用
extraTimeAmount * 1 minutes
代替extraTimeAmount minutes
。
这是你的一段代码,将按照以上几点工作-
function changeAuctionEndTime(uint extraTimeAmount) public {
require(msg.sender == contractOwner, "ONLY THE CONTRACT's OWNER CAN CALL THIS FUNCTION!");
auctionEndTime += extraTimeAmount * 1 minutes;
}