Compiler errors 不稳定的混音编译器错误“编译期间出现未知异常”

Compiler errors 不稳定的混音编译器错误“编译期间出现未知异常”,compiler-errors,ethereum,compiler-warnings,solidity,remix,Compiler Errors,Ethereum,Compiler Warnings,Solidity,Remix,混音在线编译器在相同代码和类似场景之间提供不稳定的错误消息 在编译期间,Remix不断抛出未知异常。 当函数执行多重动态时,返回三个uint[]动态数组 但当我调整大小并返回到两个动态数组时,问题就消失了。 现在我对背后的原因一无所知。已切换到不同的pragma-solidity版本 //混音在编译期间引发未知异常 function Determine_Result(uint GameId, uint RoundId) internal returns (uint[] memory Winner

混音在线编译器在相同代码和类似场景之间提供不稳定的错误消息

在编译期间,Remix不断抛出未知异常。 当函数执行多重动态时,返回三个uint[]动态数组

但当我调整大小并返回到两个动态数组时,问题就消失了。 现在我对背后的原因一无所知。已切换到不同的pragma-solidity版本

//混音在编译期间引发未知异常

function Determine_Result(uint GameId, uint RoundId) internal returns (uint[] memory WinnerUserId, uint[] memory DrawUserId, uint[] memory LoserUserId) {

    uint[] memory Im_WinnerUserIdSet;
    uint[] memory Im_DrawIdSet;
    uint[] memory Im_LoserIdSet;

    /*
    ...        
    */

    return (Im_WinnerUserIdSet, Im_DrawIdSet, Im_LoserIdSet);
}
//但是,这是可行的!?:

function Determine_Result(uint GameId, uint RoundId) internal returns (uint[] memory WinnerUserId, uint[] memory DrawUserId) {

    uint[] memory Im_WinnerUserIdSet;
    uint[] memory Im_DrawIdSet;
    uint[] memory Im_LoserIdSet;

    /*
    ...        
    */       
    return (Im_WinnerUserIdSet, Im_DrawIdSet);
}
这是一个特别的问题吗?背后的原则是什么?如何解决

求你了,我被这困了一天


按以下方式编辑函数修复了您为我收到的错误

    pragma solidity >=0.4.22 <0.6.0;

contract Test {
    function Determine_Result() public pure returns (uint[] memory WinnerUserId, uint[] memory DrawUserId, uint[] memory LoserUserId) {

        uint[] memory Im_WinnerUserIdSet;
        uint[] memory Im_DrawIdSet;
        uint[] memory Im_LoserIdSet;

        /*
        ...        
        */

        return (Im_WinnerUserIdSet, Im_DrawIdSet, Im_LoserIdSet);
    }

}
您的问题似乎与编译器版本有关。我写的代码在0.5.2版上编译。您编写的代码在0.4.22版上编译,但在0.5.2版上编译不到

据我所知,这是由于您声明了两个未在函数中使用的参数


这看起来仍然像是编译器中的一个bug,尽管它在一个场景中出错,但在另一个场景中却没有,至少现在你知道是什么导致了它。

在我未经训练的眼里,这看起来像是编译器中的一个bug。哎呀,我下次会调整照片的大小。谢谢你的提醒。我的观点是,尽管我对Remix一无所知,但如果我的编译器开始错误地崩溃,我会怀疑编译器中存在错误。我明白了,所以如果坚持这样做,我可能不得不尝试其他编译器。是的,如果您有其他可用的编译器,那么即使最终以不同的方式解决问题,也可以尝试使用它们。