稳定-错误:找不到标识符或标识符不唯一。编译错误

时间:2019-10-17 17:08:53

标签: compilation solidity

我曾尝试通过编译器版本0.5.12编译此代码,但我有一个例外:

  

浏览器/无标题。sol:21:24:DeclarationError:标识符未找到或不唯一。

     

函数getRoleOf(地址广告)公共返回(字符串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 "Нет такого пользователя";
    }
}

我的代码有什么问题?

3 个答案:

答案 0 :(得分:1)

上面的答案(@abcoathup提供)适用于0.4.26,如果您想在实体版本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;
    }
}

答案 1 :(得分:0)

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 "Нет такого пользователя";
    }
}

答案 2 :(得分:0)

pragma solidity ^0.8.0;

导入“https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol”;

合约 BlackLivesMatterToken 是 ERC20 { 构造函数(unit256 initialSupply)公共ERC20(“BlackLivesMatterToken”,“BLM”){ _mint(msg.sender, initialSupply); } }

相关问题