如何解决 UiFrame::getConfiguration() 的 "No match for =( TagGroup, RealNumber )" 错误

How to solve "No match for =( TagGroup, RealNumber )" error for UiFrame::getConfiguration()

我有一个 UIFrame 和一个 getConfiguration() 函数,return 是一个 TagGroup。但是在编译脚本时(附加了 TEM)我得到错误 No match for =( TagGroup, RealNumber ) 告诉我函数的 returned 值是一个实数。但是如下面的代码所示,getConfiguration() 函数显然有一个 TagGroup.

的 return 类型
class TestDialog : UIFrame{
    TagGroup getConfiguration(object self){
        TagGroup tg = NewTagGroup();
        return tg;
    }
    
    object init(object self){
        return self;
    }
}

object dialog = alloc(TestDialog).init();

TagGroup config = dialog.getConfiguration();

请注意,当我在家里不带显微镜尝试时,这段代码编译得很好。所以这可能是由插件或任何其他软件引起的。但是由于这也可能发生在其他用户身上并且是一个非常令人困惑的错误,所以我仍然 post 在这里提出这个问题。

要解决此问题,只需 将函数 重命名为 getConfiguration() 以外的任何名称,例如TestDialogGetConfiguration(), TestDialog_getConfiguration(), getConfig(), getConfigurationValues()1, ...

1使用 class 前缀作为@BmyGuest 在他的评论中建议的那样,因为这可以防止与其他 classes 发生冲突,也在下面的评论中解释。


我不知道为什么会出现这个错误。帮助中没有提到UIFrame::getConfiguration()函数。即使有一个,定义的函数也会覆盖原始函数或引发任何类型的签名不兼容的错误。


这是一个非常令人困惑的行为,任何程序员都无法预料,并且与其他编程语言甚至 都不一致。 Function names 应该无关紧要,这使得人们甚至不会在这里考虑这个解决方案。这就是为什么我认为应该在 Whosebug 上提及其解决方案的问题。尽管解决方案非常简单......如果你知道的话。