0

因此,给定一个类,我希望有一个属性,该属性设置函数返回一些值以指示它是否成功设置该值。

classdef Foo
  properties
    bar;
  end
  methods
    function this = set.bar(this, instanceOfBar)
      if instanceOfBar.x < 5 & instanceOfBar < 10
        this.bar = instanceOfBar;
        return something to tell me that this instance of bar matched my criteria
      else
        return some value to tell me that it did not match
      end
    end
  end
end

classdef bar
  properties
    x;
    y;
  end
end

所以我会有一堆 bar 对象,我想将它们传递给 foo 直到它接受其中一个。我知道我可以在课堂外进行此操作,但我希望所有数据验证都在课堂内进行。

我试图让 set 函数返回另一个值,但没有任何效果。这可能吗?

如果不是,我的解决方法是添加一个属性,其唯一目的是报告最后一组是否成功,并在每次调用后检查。因此,如果不可能,其他人是否有一个很好的解决方法来解决这个缺失的功能?

编辑:响应第一个答案

if set(myobject, 'A', 1) == 'Good'
  execute code
else
  do something else

在测试中这不起作用。我误解了你的回答吗?

4

1 回答 1

1

您需要子类化hgsetget才能使用 get/set 接口

classdef foo < hgsetget
    properties
        A
    end
    methods 
        function obj = set.A(obj,val)
        if val == 1
            obj.A = val;
            disp('Good')
        else
            disp('Bad')
        end
        end
    end
end

在行动:

myobj = foo
myobj = 
  foo with properties:
    A: []

set(myobj,'A',1)
Good

get(myobj)
A: 1
于 2013-07-18T21:08:23.577 回答