Compiler errors 不稳定的混音编译器错误“编译期间出现未知异常”
混音在线编译器在相同代码和类似场景之间提供不稳定的错误消息 在编译期间,Remix不断抛出未知异常。 当函数执行多重动态时,返回三个uint[]动态数组 但当我调整大小并返回到两个动态数组时,问题就消失了。 现在我对背后的原因一无所知。已切换到不同的pragma-solidity版本 //混音在编译期间引发未知异常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
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一无所知,但如果我的编译器开始错误地崩溃,我会怀疑编译器中存在错误。我明白了,所以如果坚持这样做,我可能不得不尝试其他编译器。是的,如果您有其他可用的编译器,那么即使最终以不同的方式解决问题,也可以尝试使用它们。