В современных объектах Matlab я не думаю, что можно выйти из конструктора, не возвращая построенный объект или не выдавая ошибку.(В классах старого стиля конструктору было разрешено возвращать все, что он хотел, включая объекты или примитивы других типов, и, о человеке, это могло бы превратиться в беспорядок.) Когда вызывается конструктор, выходной аргумент уже инициализированс объектом со значениями свойств по умолчанию, поэтому, когда вы вызываете return
, он просто пропускает остальную часть инициализации и возвращает объект.Если вы попытаетесь заменить что-то, кроме объекта MyClass, это ошибка.
Просто реорганизуйте поток управления, чтобы вытащить код GUI из конструктора, как вы спекулировали в конце.Смешивание его с конструктором, особенно условно, может вызвать проблемы.В частности, Matlab ожидает, что конструктор с нулевым аргументом всегда будет возвращать скалярный объект со своего рода значениями по умолчанию, потому что нулевой аргумент вызывается неявно при заполнении элементов во время расширения массива и так далее.Он в основном используется в качестве прототипа.