【问题标题】:How to reference a class constructor within a package?如何在包中引用类构造函数?
【发布时间】:2013-07-05 03:59:25
【问题描述】:

假设下面的类fee 定义在一个包中,例如+fee/fee.m。为了让flip 方法调用类构造函数,似乎有必要使用完整的命名空间,即foo.fee。如果可以在不引用包含包的情况下定义对象,那就太好了。

有没有办法避免调用foo.fee

classdef fee
   properties
      x
      y = 1
   end
   methods
      function self = fee(x)
         self.x = x;
      end
      function self2 = flip(self)
         self2 = foo.fee(self.x);
         self2.y = xor(self.y,1);
      end
   end
end

【问题讨论】:

标签: matlab oop constructor packages


【解决方案1】:

您是否尝试过使用import 函数?我认为应该可以这样做:

classdef fee
   properties
      x
      y = 1
   end
   methods
      function self = fee(x)
         self.x = x;
      end
      function self2 = flip(self)
         import(mfilename('class'));           
         self2 = fee(self.x);
         self2.y = xor(self.y,1);
      end
   end
end

【讨论】:

  • 这是一个改进,因为这意味着不必跟踪封闭包的名称。仍然很不幸,因为人们希望一个方法可以直接访问它自己的类的构造函数。
猜你喜欢
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 2017-08-17
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多