mrK*_*ley 7 oop methods matlab arguments class
我发现了一些相关的问题,但在那里找不到答案.
我正在编写一个简单的小MATLAB类,以便在MATLAB中学习OOP语法.我对Python非常熟悉,并试图使用MATLAB.这是定义:
classdef Car < handle
properties
speed = [0,0] %x,y velocity
position = [0,0]
running = false
end
methods
function obj = Car(pos, spd)
obj.position = pos;
obj.speed = spd;
end
function accelerate(obj,x,y) % Add to speed
obj.speed = obj.speed + [x,y]
end
function position = getPosition(obj)
position = obj.position
end
function start(obj)
obj.running = true
end
function stop(obj)
obj.running = false
end
end
end
Run Code Online (Sandbox Code Playgroud)
这当然没有完成,但后来我使用一个小脚本来弄乱对象:
foo = Car([1,1],[0,2])
foo.start
foo.accelerate(2,3)
Run Code Online (Sandbox Code Playgroud)
实例化工作,但我调用的任何方法都会抛出错误.foo.start,例如:
Error using Car/start
Too many input arguments.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
mrK*_*ley 23
由于我无法弄清楚如何删除这个问题,我会尽力回答.与其他语言一样,MATLAB中的面向对象编程希望将其obj视为类方法中的第一个参数(如selfpython中).必须对该对象的引用才能修改其属性.我没有在方法定义中包含它,所以当我调用方法时,我得到了"太多参数"错误.那是因为如果你这样做foo.method(a,b),那么对象foo实际上是作为参数传递的,所以你的功能实际上是获得3个输入,即method(foo,a,b).
我查看了我的代码并添加obj到适当的位置,但未能clear在MATLAB命令窗口中使用该命令.由于我是MATLAB的新手,我不知道它的重要性.我只是假设保存文件并重新实例化我的类就足够了.它不是.
我希望这可以帮助任何遇到这个问题的人.
| 归档时间: |
|
| 查看次数: |
7583 次 |
| 最近记录: |