gpt4 book ai didi

ethereum - 成员相等在类型中不可用(库断言)

转载 作者:行者123 更新时间:2023-12-03 15:04:07 25 4
gpt4 key购买 nike

当我想测试一个字符串值是否正确时,问题就出现了。数字被正确断言,并且在尝试编译时不会返回错误消息。但是,当我尝试断言字符串时,它返回以下错误消息:

Error: Member "equal" is not available in type(library Assert) outside of storage.
Assert.equal(token.symbol(), "$", "The symbol of the token should be $");
^----------^
Compiliation failed. See above.

Token.sol
pragma solidity ^0.4.8;

contract Token {
/* The amount of tokens a person will get for 1 ETH */
uint256 public exchangeRate;

/* The name of the token */
string public name;

/* The address which controls the token */
address public owner;

/* The symbol of the token */
string public symbol;

/* The balances of all registered addresses */
mapping (address => uint256) balances;

/* Token constructor */
function Token(uint256 _exchangeRate, string _name, string _symbol) {
exchangeRate = _exchangeRate;
name = _name;
owner = msg.sender;
symbol = _symbol;
}

function getBalance(address account) returns (uint256 balance) {
return balances[account];
}
}

TestToken.sol
pragma solidity ^0.4.8;

// Framework libraries
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";

// Custom libraries and contracts
import "../contracts/Token.sol";

contract TestToken {
function testExchangeRate() {
Token token = new Token(500, "Dollar", "$");

uint256 expected = 500;

Assert.equal(token.exchangeRate(), expected, "The exchange rate should be 500 tokens for 1 ETH");
}

function testSymbol() {
Token token = new Token(500, "Dollar", "$");

Assert.equal(token.symbol(), "$", "The symbol of the token should be $");
}
}

为什么会发生,您如何解决?

最佳答案

截至目前,solidity 不支持在合约之间返回字符串。因为在调用时不知道字符串的长度。所以他们只支持固定大小的 arryas,比如 bytes32。

您可以使用多个 bytes32 来存储字符串的不同部分。

关于ethereum - 成员相等在类型中不可用(库断言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42783106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com