Types 如何解决;不匹配=(标记组,实数)";UiFrame::getConfiguration()的错误

Types 如何解决;不匹配=(标记组,实数)";UiFrame::getConfiguration()的错误,types,compiler-errors,dm-script,Types,Compiler Errors,Dm Script,我有一个带有getConfiguration()函数的UIFrame,该函数返回一个TagGroup。但是在编译脚本时(附带TEM),我得到一个错误No match for=(TagGroup,RealNumber)告诉我函数的返回值是实数。但如下面的代码所示,getConfiguration()函数的返回类型显然是TagGroup 类测试对话框:UIFrame{ 标记组getConfiguration(对象自身){ TagGroup tg=NewTagGroup(); 返回tg; } 对象初始

我有一个带有
getConfiguration()
函数的
UIFrame
,该函数返回一个
TagGroup
。但是在编译脚本时(附带TEM),我得到一个错误
No match for=(TagGroup,RealNumber)
告诉我函数的返回值是实数。但如下面的代码所示,
getConfiguration()
函数的返回类型显然是
TagGroup

类测试对话框:UIFrame{
标记组getConfiguration(对象自身){
TagGroup tg=NewTagGroup();
返回tg;
}
对象初始化(对象自身){
回归自我;
}
}
objectdialog=alloc(TestDialog).init();
TagGroup config=dialog.getConfiguration();

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

要解决这个问题,只需将函数重命名为
getConfiguration()
,例如
TestDialogGetConfiguration()
TestDialog\u getConfiguration()
getConfig())
getConfigurationValues()
1

1使用@BmyGuest在其评论中建议的类前缀,因为这可以防止与其他类发生冲突,下面的评论也对此进行了解释


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



这是一种非常令人困惑的行为,任何程序员都无法预料,并且与其他编程语言甚至其他语言不一致。函数名根本不重要,这使得人们甚至没有想到这个解决方案。这就是为什么我认为应该在stackoverflow上提到其解决方案的问题。即使解决方案非常简单。。。如果你知道的话。

是的。通常建议为所有脚本类方法指定真正唯一的名称,最好使用短前缀,如
XYS\u MethodName()
或类似名称。语言内部的
脚本对象
之间没有内部区别,它们都只是一个大类。因此,任何添加脚本方法的脚本插件都可能导致歧义消除问题。DM的很多摄像头代码仍在使用脚本代码,其中一个代码中可能使用了“GetConfiguration”。脚本中的函数没有这个问题,但类方法是一个问题。啊哈。这可能解释了为什么会发生这种错误。以及为什么它不会出现在我的家庭系统中。应该补充的是,DM脚本代码从不编译。这是一种纯粹的翻译语言。(如果脚本存储为扩展名为.gtk的包,也是如此)您的意思是,在您的家庭系统上,初始语法检查不会返回错误,因此脚本开始执行。