【发布时间】:2011-08-31 17:53:50
【问题描述】:
假设我有一个myClass < handle,其属性为A。如果我创建一个myClass 的实例,比如myObj,并将myObj.A 传递给一个函数,比如function myFunc(val),是否有可能在myFunc 中看到传递给它的val 是一个属性myObj?
编辑:对于上下文:
我正在为我的研究实验室编写一个 API(在某种意义上)来与 Arduino 硬件接口。总体类称为Vehicle,具有PinManager < handle、TelemCollector < handle 和各种Device < handles 属性。它还有一些方法可以做runMotor()、getAltitude()等。我有一个方法TelemCollector.telemFetch(),它是一个定时器事件的回调;我希望TelemCollector.telemFetch() 能够访问Vehicle 方法(即getAltitude());天真地我只是将Vehicle 设为TelemCollector 的属性来访问这些方法。我希望不必这样做。
EDIT2:我正在尝试完成的示例代码 sn-p:
classdef Vehicle < handle
properties
PinManager
TelemCollector
Devices
end
methods
function obj = Vehicle(PM, TC, D)
obj.TC = TelemCollector();
obj.PM = PinManager();
obj.Devices = D();
end
function val = getAltitude(obj)
%# read altitude from a connected Device
end
function val = getSpeed(obj)
%# read speed from connected Device
end
end
end
classdef TelemCollector < handle
properties
%# ...
end
methods
function fetchTelem(obj)
%# do getAltitude(), getSpeed(), etc, here.. but I want to access
%# Vehicle.getAltitude() and Vehicle.getSpeed() somehow!
end
end
end
【问题讨论】:
-
我不太明白 - 首先你说 Vehicle 有一个 TelemCollector 类的属性,最后你说你正在考虑给 TelemCollector 一个 Vehicle 类型的属性?如果 telemFetch() 需要访问两个对象的内部,它需要是“外部”对象的方法,而不是内部对象才能使其工作。
-
...也许您可以发布实际代码 sn-p 而不是文字描述;那会更容易理解...
-
将代码 sn-p 添加到 OP。我想让
telemFetch()访问Vehicle方法;如果TelemCollector的属性Vehicle是TelemCollector的属性,这是可行的。由于一切都是句柄,它们将引用正确的对象实例。当然,我真的不想那样做。