MATLAB:调用内置函数时出现问题('addlistener',...)

MATLAB: Problem calling builtin('addlistener', ...)

在 Matlab (2017b) 中 class 我试图重载 addlistener 并且在使用 builtin 函数调用它时遇到问题。

我起初以为问题是由 class 实现引起的,但事实证明我可以用几行代码重现问题:

% This works ...
l = line(rand(2,1),rand(2,1));
addlistener(l,'Color','PostSet',@(h,e)disp(123));  % create listener
l.Color = rand(1,3);  % trigger listener, '123' is displayed

% This does not ...
builtin('addlistener',l,'Color','PostSet',@(h,e)disp(456)); % ERROR, but why !?

在最后一行代码中使用 builtin 命令会引发以下错误:

First argument provided is not valid for addlistener. (Check its type or
validity)

我认为 builtin 的语法是正确的,并且认为这可能是一个 Matlab 错误,但也许有人可以证明我错了:-)

内置函数 addlistener 不支持类型 line 的对象,您需要为 line 重载的版本。但是你不能用 builtin.

调用那个版本

您可能正在尝试调用方法的超类版本。为此,请按照 manual:

中的说明进行操作
addlistener@superclass(args)