无论定义何种类,都跳转到方法定义

时间:2013-08-16 16:32:11

标签: matlab ide command-prompt

在MatlabⓇIDE中,有没有简单的方法可以跳转到特定方法的定义,而不知道它定义在哪个类中?

对于自包含功能,我可以输入edit funcname.m。课程也一样。但是,特定类的超类层次结构可能很大。通过使用元类,我可以找到in what class a method was defined,然后打开该类,并浏览到适当的定义。这比自包含功能要多得多。

在交互式提示符下,是否有任何直接方式 跳转到特定方法的定义,将断点放入这个方法(这样执行它会导致编辑器跳转到定义)?

2 个答案:

答案 0 :(得分:3)

实际上,在MATLAB的IDE中,您可以在文件中的函数之间移动。 如果您想获取有关您在代码中调用的函数的更多信息,可以使用Open Selection( CTRL + D 与Windows键绑定)快速跳转到哪里该函数已定义。

点击此链接:MATLAB Spoken Here

如果您将光标移动到编辑器中的某个功能上,然后按ctrl + D,该功能将在编辑器中打开。对于类中的方法,您可以使用“转到”。如果该方法在本课程中定义。

答案 1 :(得分:3)

在给定特定输入参数时,您可以使用which来定位函数。

比如说我们在路径上有以下文件:

>> which -all fun
C:\Users\Amro\Desktop\fun.m
C:\Users\Amro\Desktop\Klass.m    % Klass method

Klass.m

classdef Klass < handle
    methods
        function fun(obj)
            disp('hello from Klass')
        end
    end
end

fun.m

function fun()
    disp('hello from fun')
end

现在我们可以区分两者给出的参数:

>> o = Klass();
>> which('fun(o)')
C:\Users\Amro\Desktop\Klass.m  % Klass method

>> which('fun')
C:\Users\Amro\Desktop\fun.m

请注意,在类方法的情况下,我们必须使用语法:fun(obj, args, ...)而不是obj.fun(args, ...)

您可以使用matlab.desktop.editor API打开指定函数的编辑器:

matlab.desktop.editor.openAndGoToFunction(which('Klass'),'fun');