【发布时间】:2019-05-30 18:04:41
【问题描述】:
Remix 在线编译器在相同代码和相似场景之间给出不稳定的错误消息。
Remix 不断抛出“编译期间出现未知异常”。 当函数做多个动态返回时(三个 uint[] 动态数组)。
但是当我将返回的大小调整为两个动态数组时,问题就消失了。 现在我对它背后的原因一无所知。已经切换了不同的 pragma solidity 版本。
//Remix在编译过程中抛出Unknown异常。
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);
}
这是一个特殊的问题吗?这背后的原理是什么以及如何解决这个问题
拜托,我被这个困了一天
【问题讨论】:
-
在未经训练的人看来,这看起来像是编译器中的一个错误。
-
哎呀,下次我会调整照片的大小。感谢您的善意提醒。
-
我的意思是,即使我对 Remix 一无所知,如果我的编译器开始虚假崩溃,我会怀疑编译器中存在错误。
-
我明白了,所以如果坚持要这样做,我可能不得不尝试其他编译器。
-
是的,如果您有可用的替代编译器,即使您最终以不同的方式解决问题,尝试它们也是一个好主意。
标签: compiler-errors ethereum compiler-warnings solidity remix