我刚刚发现当从Matlab调用Java时
object.method(arg1,...,argn)等于
method(object, arg1,...,argn)这里的问题是,我还有一个method.m,它可以完成一些从Java到Matlab的转换(例如。将String[]转换为字符串单元格)。我的method.m看起来就像
function result = method(object, arg1,...argn)
intermediate = object.method(arg1,...argn);
result = translate(intermediate);当我调用method(object, arg1,...,argn)时,它执行直接的method.m调用,而不是使用我的method.m
修复很简单,只是我的Java方法和.m文件都不要使用相同的方法名。,但还有别的办法吗?我如何知道哪个方法会被调用,并给出相同的名称?是否有一种方法可以确保我调用method.m 而不是方法?很容易确保调用Java方法,只需使用object.method语法即可。
顺便提一句,同样愚蠢的是,.m编辑器链接到method.m调用的method(object, arg1,...,argn),而当它调试时,它调用了method(object, arg1,...,argn)方法。
发布于 2009-03-17 22:41:50
你可能会遇到一些MATLAB如何调度的问题.
我如何知道哪个方法会被调用相同的名称?
MATLAB文档的这一节讨论了在有多个名称相同的函数的情况下如何选择函数。从文档中看:“函数优先顺序根据函数的类型及其在MATLAB路径上的位置来确定一个函数的优先级。”这一订单(从最高到最低)如下:
在使用" method (object,.)“时,您的"method.m”函数的位置很可能会决定它是被调用还是Java方法被调用语法。
有没有办法确保我调用了.m而不是方法?
现在,我猜您的"method.m“位于当前目录或路径的其他位置(两个最低优先级位置)。如果您在更大的代码中创建了一个调用它的“子函数 .m”,或者可以将它放在一个专用目录中,每个需要调用它的函数都可以调用它,那么当您使用“方法(object,.)”时,可能会调用它而不是Java方法。语法。
希望这能有所帮助!
https://stackoverflow.com/questions/656014
复制相似问题