将文件夹打包到类文件夹中

  • 本文关键字:文件夹 matlab oop
  • 更新时间 :
  • 英文 :


在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文件中。这是将代码组合在一起的更好方法。

相关内容

  • 没有找到相关文章

最新更新