所以我在设置对象的特定属性时遇到问题.我对Matlab相对较新,特别是面向对象编程.以下是我的代码:
classdef Card < handle
properties
suit;
color;
number;
end
methods
%Card Constructor
function obj= Card(newSuit,newColor,newNumber)
if nargin==3
obj.suit=newSuit;
obj.color=newColor;
obj.number=newNumber;
end
end
function obj=set_suit(newSuit)
obj.suit=(newSuit);
end
Run Code Online (Sandbox Code Playgroud)
一切运行正常,直到我尝试set_suit函数.这是我在命令窗口中输入的内容.
a=Card
a =
Card handle
Properties:
suit: []
color: []
number: []
Methods, Events, Superclasses
a.set_suit('Spades')
Error using Card/set_suit
Too many input arguments.
Run Code Online (Sandbox Code Playgroud)
这总是返回太多输入参数的错误.一般来说,对此和面向对象编程的任何帮助都将非常感激.
对于类方法(非静态),第一个参数是对象本身。所以,你的方法应该是这样的:
function obj=set_suit( obj, newSuit)
obj.suit=(newSuit);
end
Run Code Online (Sandbox Code Playgroud)
obj请注意参数列表开头的附加参数。
现在您可以通过以下方式调用此方法
a.set_suit( 'Spades' );
Run Code Online (Sandbox Code Playgroud)
或者
set_suit( a, 'Spades' );
Run Code Online (Sandbox Code Playgroud)