Solidity - Error: Identifier not found or not unique. Compilation error
Solidity - Error: Identifier not found or not unique. Compilation error
我曾尝试使用编译器版本 0.5.12 编译此代码,但出现异常:
browser/Untitled.sol:21:24: DeclarationError: Identifier not found or not unique.
function getRoleOf(adress ad) public returns(string txt){
^----^
我的代码:
pragma solidity >=0.4.22 <0.5.13;
contract Max{
mapping(address => uint256) private balaces;
mapping(address => role) private roles;
enum role{
Admin,
Manager,
User
}
constructor() public{
balaces[msg.sender] = 1000;
roles[msg.sender] = role.Admin;
}
function getRoleOf(adress ad) public returns(string txt){
if(roles[ad] == role.User){
txt = "User";
return;
}
if(roles[ad] == role.Manager){
txt = "Manager";
return;
}
if(roles[ad] == role.Admin){
txt = "Admin";
return;
}
return "Нет такого пользователя";
}
}
我的代码有什么问题?
输入错误:function getRoleOf(adress ad)
adress
应该是 address
以下使用 Solidity Compiler 0.4.26 在 Remix 中编译
pragma solidity >=0.4.22 <0.5.13;
contract Max{
mapping(address => uint256) private balaces;
mapping(address => role) private roles;
enum role{
Admin,
Manager,
User
}
constructor() public{
balaces[msg.sender] = 1000;
roles[msg.sender] = role.Admin;
}
function getRoleOf(address ad) public returns(string txt){
if(roles[ad] == role.User){
txt = "User";
return;
}
if(roles[ad] == role.Manager){
txt = "Manager";
return;
}
if(roles[ad] == role.Admin){
txt = "Admin";
return;
}
return "Нет такого пользователя";
}
}
以上答案(来自@abcoathup)适用于 0.4.26,如果您想在 solidity 版本 0.5.12 中执行代码,请检查以下代码(稍作优化)
pragma solidity >=0.4.22 <0.5.13;
contract Max{
mapping(address => uint256) private balaces;
mapping(address => role) private roles;
enum role{
Admin,
Manager,
User
}
constructor() public{
balaces[msg.sender] = 1000;
roles[msg.sender] = role.Admin;
}
function getRoleOf(address ad) public returns(string memory txt){
txt = "Нет такого пользователя";
if(roles[ad] == role.User){
txt = "User";
} else if(roles[ad] == role.Manager){
txt = "Manager";
} else if(roles[ad] == role.Admin){
txt = "Admin";
}
return txt;
}
}
pragma solidity ^0.8.0;
导入“https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol”;
合约 BlackLivesMatterToken 是 ERC20 {
构造函数(unit256 initialSupply)public ERC20(“BlackLivesMatterToken”,“BLM”){
_mint(msg.sender, initialSupply);
}
}
getRoleOf(adress ad)
--> getRoleOf(address ad)
它的拼写错误address
。
我曾尝试使用编译器版本 0.5.12 编译此代码,但出现异常:
browser/Untitled.sol:21:24: DeclarationError: Identifier not found or not unique.
function getRoleOf(adress ad) public returns(string txt){
^----^
我的代码:
pragma solidity >=0.4.22 <0.5.13;
contract Max{
mapping(address => uint256) private balaces;
mapping(address => role) private roles;
enum role{
Admin,
Manager,
User
}
constructor() public{
balaces[msg.sender] = 1000;
roles[msg.sender] = role.Admin;
}
function getRoleOf(adress ad) public returns(string txt){
if(roles[ad] == role.User){
txt = "User";
return;
}
if(roles[ad] == role.Manager){
txt = "Manager";
return;
}
if(roles[ad] == role.Admin){
txt = "Admin";
return;
}
return "Нет такого пользователя";
}
}
我的代码有什么问题?
输入错误:function getRoleOf(adress ad)
adress
应该是 address
以下使用 Solidity Compiler 0.4.26 在 Remix 中编译
pragma solidity >=0.4.22 <0.5.13;
contract Max{
mapping(address => uint256) private balaces;
mapping(address => role) private roles;
enum role{
Admin,
Manager,
User
}
constructor() public{
balaces[msg.sender] = 1000;
roles[msg.sender] = role.Admin;
}
function getRoleOf(address ad) public returns(string txt){
if(roles[ad] == role.User){
txt = "User";
return;
}
if(roles[ad] == role.Manager){
txt = "Manager";
return;
}
if(roles[ad] == role.Admin){
txt = "Admin";
return;
}
return "Нет такого пользователя";
}
}
以上答案(来自@abcoathup)适用于 0.4.26,如果您想在 solidity 版本 0.5.12 中执行代码,请检查以下代码(稍作优化)
pragma solidity >=0.4.22 <0.5.13;
contract Max{
mapping(address => uint256) private balaces;
mapping(address => role) private roles;
enum role{
Admin,
Manager,
User
}
constructor() public{
balaces[msg.sender] = 1000;
roles[msg.sender] = role.Admin;
}
function getRoleOf(address ad) public returns(string memory txt){
txt = "Нет такого пользователя";
if(roles[ad] == role.User){
txt = "User";
} else if(roles[ad] == role.Manager){
txt = "Manager";
} else if(roles[ad] == role.Admin){
txt = "Admin";
}
return txt;
}
}
pragma solidity ^0.8.0;
导入“https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol”;
合约 BlackLivesMatterToken 是 ERC20 { 构造函数(unit256 initialSupply)public ERC20(“BlackLivesMatterToken”,“BLM”){ _mint(msg.sender, initialSupply); } }
getRoleOf(adress ad)
--> getRoleOf(address ad)
它的拼写错误address
。