3

这就是问题:

  1. 创建一个类并将某些属性或方法的访问权限设置为私有。
  2. 使用doc创建的类的命令。这将根据您的评论自动生成文档并在内置帮助浏览器中显示。

    doc classname

问题是私有属性和方法的文档没有显示在帮助浏览器中。有没有办法克服这个问题?

4

2 回答 2

3

此行为是设计使然 - 自动生成的文档适用于该类的用户,他们只能访问公共属性和方法。

我知道没有办法改变这种行为。

你可以试试:

  1. 使用自动生成文档的替代系统,例如来自 MATLAB Central File Exchange(我相信它将记录所有属性,而不仅仅是公共)。
  2. 实现你自己的doc命令。您的doc命令应该接受与内置命令完全相同的输入doc,检测其输入是否对应于您的类/方法/属性等,如果是,则显示它们的文档,否则将其输入直接传递给内置的doc. 确保您的命令在路径上的内置命令之前。
于 2013-09-04T09:57:33.077 回答
3

所以我花了大约 10 分钟使用调试器,从一个函数跳到下一个函数,跟踪一个简单doc MyClass调用的执行路径。

最终它把我带到了以下文件:

fullfile(toolboxdir('matlab'),'helptools','+helpUtils','isAccessible.m')

在为类生成文档的过程中调用此函数,以确定类元素(包括方法、属性和事件)是否可公开访问且不可隐藏。此信息稍后用于“剔除”元素。

因此,如果您愿意修改 MATLAB 的内部函数,并且希望文档始终显示所有方法和属性而不管其范围如何,只需将函数重写为:

function b = isAccessible(classElement, elementKeyword)
    b = true;
    return

    % ... some more code we'll never reach!
end

当然,不要忘记备份文件,以防您以后改变主意:)

(在最近的 Windows 上,您需要使用管理权限执行此步骤)


作为测试,获取此页面中定义的示例类并运行doc someClass. 结果:

doc someClass

于 2013-09-06T23:13:58.607 回答