在Matlab中设置对象的属性

时间:2013-03-06 05:41:34

标签: oop matlab

所以我在设置对象的特定属性时遇到问题。我对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

一切运行正常,直到我尝试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.

这总是返回太多输入参数的错误。对此以及面向对象编程的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:4)

对于类methods(非static),第一个参数是对象本身。所以,你的方法应该是这样的:

function obj=set_suit( obj, newSuit)
    obj.suit=(newSuit);
end

请注意参数列表开头的附加obj参数。

现在您可以通过

调用此方法
a.set_suit( 'Spades' );

set_suit( a, 'Spades' );