matlab - 类文件夹中的打包文件夹
问题描述
在 MATLAB 中,类文件夹由 表示,foo/@bar/
包文件夹由 表示foo/+bar
。在我的层次结构中,我有在单独文件中定义方法的类,因此@bar/
约定对于它们的包含文件夹是必要的。但是,我也有一些方法在它们的实现中变得有些复杂,并且希望将它们打包到......好吧,使用+bar/
约定的包,如下所示:
foo/@classfolder/MyClass.m
foo/@classfolder/method1.m
foo/@classfolder/method2.m
foo/@classfolder/+othermethodstuff/method2helper.m
foo/@classfolder/+othermethodstuff/mexmethod_formethod2helper.m
foo/@classfolder/+othermethodstuff/mexfiles/
我想这样做是因为我的实际代码中的方法在这里表示method2.m
依赖于来自 MEX 文件的一些繁重的计算,我更愿意将这些计算放在他们自己的文件夹中,当我调用这些时,MATLAB 使用的包系统保持清晰方法(以及从哪里)。
这可能吗?如果没有,我唯一的其他选择是放弃@
类文件夹约定并将所有内容都粘贴到包(+
)文件夹中吗?
解决方案
您应该将这些私有实现文件放在子目录private
中。那是他们的传统位置。如果您想创建一些明显的层次结构来组织代码,我建议使用长文件名。
例如:
foo/@classfolder/MyClass.m
foo/@classfolder/method1.m
foo/@classfolder/method2.m
foo/@classfolder/private/physicssimulation_function1.m
foo/@classfolder/private/physicssimulation_function2.m
foo/@classfolder/private/physicssimulation_mexfile.mex
foo/@classfolder/private/uihelper_functionA.m
foo/@classfolder/private/uihelper_functionB.m
可以从目录中的任何函数调用私有目录中的 M 文件和 MEX 文件,就好像它们在路径上一样(即调用它们时@classfolder
不使用)。private
但它们对于该目录是私有的,并且从外部不可见。
上述建议假设多个类方法使用相同的私有功能。如果只有一种方法使用physicssimulation
,那么它的所有函数都应该在该方法的 M 文件中。这是将代码保持在一起的更好方法。
推荐阅读
- sql - Oracle 选择查找出现的几个状态
- shell - 如何使用 perl -lane 命令行选择特定列?
- listview - 如何在运行时创建 ListView(ItemAppearance = DynamicAppearance)?
- php - Guzzle json 布尔问题 false 为空白
- angular - Angular:可观察服务不从 api 获取数据
- python - 努力消除异常值
- javascript - 在相对于页面的固定 div 内滚动内容
- javascript - 用户停止输入后处理更新的最佳方式是什么?
- c - 从 ELF 文件生成全上下文符号表
- python - 什么时候将新的 tensorflow 版本上传到 piwheels.org?