假设我在下面看到了一个子功能。这两个有什么区别
function a=b(x,y)
.
.
.
a=output
和
function b(x,y)
......
如果我以第二种形式编写它,我如何定义它的主函数以及如何查看其输出。
另一个问题,
我从这里找到了一个代码(http://www.mathworks.com/matlabcentral/fileexchange/21443-multiple-rapidly-exploring-random-tree--rrt-),其中包含一个函数:
%% SetObstacleFilename
function SetObstacleFilename(self,value)
if isa(value,'char')
self.obstacleFilename = value;
self.GenerateObstacles();
end
end
我如何在主函数中使用它?什么是self.GenerateObstacles()命令?它没有平等吗?
答案 0 :(得分:0)
我想我看到你的两个问题都与同一件事有关。你真的应该问过以下几点:
我总是看到以
function a=b(x,y)
形式编写的MATLAB函数,但最近我遇到了some code,其中包含function b(x,y)
形式的函数(例如function SetObstacleFilename(self,value)
)...那是怎么回事?
为了理解第二类函数,您需要考虑面向对象编程(OOP)。
您找到的代码示例来自MATLAB class
。类相关函数在OOP中称为“方法”,而另一种编程语言中的特定代码将采用void
return type函数\方法的形状。
现在考虑引用object
的实例的术语class
。
传统上,方法仅限于单个输出。出于这个原因,一些方法被设计为在objects
(实际pointers
,AKA“通过引用传递”)上操作,使得根本不需要返回值,因为输入对象是直接操作的。当方法不需要返回任何东西的其他情况可能包括具有一些“实用”功能的函数(例如初始化某些东西,绘制一些东西,输出一些东西到控制台等等 - 就像{{1你提到过的方法。)
关于您的其他问题:
self.GenerateObstacles()
中的self
看起来像是所考虑的类的实例。SetObstacleFilename(self,value)
。< / LI>
总而言之 - 以上只是OOP最基本的基础知识。我不会试图在单腿站立时教你整个OOP Torah,所以我在下面提供一些额外的材料,如果你有兴趣进一步理解这个主题。
希望现在发生的事情有点清楚了!
以下是一些资源: