首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOP八度编程

OOP八度编程
EN

Stack Overflow用户
提问于 2014-05-23 13:28:04
回答 2查看 2.4K关注 0票数 1

我试图运行一个OOP程序的八度,最初为Matlab编写。我不能得到大部分的部分正确,但不能调用方法。

这是示例代码。

代码语言:javascript
复制
obj = Motor('SamplePeriod', 1/256, 'Beta');
methods(obj)
Methods for class Motor:

Motor  Update

obj.Update();
error: invalid index for class

我试着看了说明书,没能拿到说明书。此外,网上也没有任何样品。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-23 13:51:33

正如所描述的这里,您需要使用替代方式调用您的方法:

代码语言:javascript
复制
m = motor(...) 
p = power(m, ...) 

在你的情况下

代码语言:javascript
复制
Update(obj) 

正如丹尼尔所提到的

票数 0
EN

Stack Overflow用户

发布于 2016-07-15 08:57:36

仍然可以使用obj.Update()语法调用类的方法,但需要在类中实现一个特殊方法:

代码语言:javascript
复制
function varargout = subsref (obj, idx)
  persistent __method__ method4field typeNotImplemented
  if isempty(__method__)

    __method__ = struct();
    __method__.Update = @(o,varargin) Update (o, varargin{:});

  # Error strings
    method4field = "Class #s has no field #s. Use #s() for the method.";
    typeNotImplemented = "#s no implemented for class #s.";

  end

  method = idx(1).subs;
  if ~isfield(__method__, method)
    error('Unknown method #s.',method);
  else
    fhandle = __method__.(method);
  end
  if strcmp (idx(2).type, '()')

    args = idx(2).subs;
    if isempty(args)
     out = fhandle (obj);
    else
      out = fhandle (obj, args{:});
    end

    varargout{1} = out;

  end
endfunction

更多细节可以在几何学包中找到,查看inst/io/@svg文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23830523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档