Matlab 类、属性和方法的点表示法是什么意思?

Matlab 类、属性和方法的点表示法是什么意思?,matlab,class,oop,Matlab,Class,Oop,我是编程方面的新手,除了使用Matlab的基本功能已有几年(操作数组、线性代数、函数、脚本等)外,最近我开始探索程序的面向对象方面(这也是我第一次尝试任何面向对象编程!) 我现在最大的症结是理解这个点符号到底意味着什么。例如,假设我编写了一个简单的类 classdef alchemy properties element end methods % CONSTRUCTOR function e = alchemy

我是编程方面的新手,除了使用Matlab的基本功能已有几年(操作数组、线性代数、函数、脚本等)外,最近我开始探索程序的面向对象方面(这也是我第一次尝试任何面向对象编程!)

我现在最大的症结是理解这个点符号到底意味着什么。例如,假设我编写了一个简单的类

classdef alchemy
    properties
        element
    end

    methods
%   CONSTRUCTOR
        function e = alchemy
            e.element = '    ';
        end
    end
end
e.element
实际上是什么意思?然后在命令行中键入

e.element = 'LEAD'
将字符串
'LEAD'
分配给类
炼金术
的属性
元素
的一个实例。。。。为什么会这样

现在让我添加这个方法

        function e = transmute(e)
            oldElem = e.element;
            if oldElem == 'LEAD'
                e = 'GOLD';
            elseif oldElem == 'GOLD'
                e = 'LEAD';
            else
                disp('Oh no! This is a non-transmutable element.');
            end
        end
我现在可以在命令行中输入
e=e.transmute
,它将返回

e =

GOLD

在这种情况下,点符号是怎么回事?为什么
e.transumte
将功能
transmute
应用于
e
?我真的被整个符号弄糊涂了,Matlab的帮助页面都没有给我任何更深的线索。任何帮助都将不胜感激

点表示法用于对象的属性或调用方法

它有两种含义

 name_object.abc

如果abc是name\u对象的属性,则将为您提供abc值;如果abc是方法,则将在name\u对象上调用abc。

点符号用于对象的属性/属性或调用方法

它有两种含义

 name_object.abc
如果abc是name\u object的属性,则将为您提供abc的值;如果abc是方法,则将在name\u object上调用abc。

Matlab中的类(或对象)是
属性
方法
的集合

可能令人困惑的是,您的方法
transmute
接受对象(它应该接受),但返回与原始对象具有相同变量名的字符串。它或多或少是一种“获取值”方法。不是变形的物体

通过这种方式,它返回已转换的对象

function e = transmute(e)
    switch e.element 
        case 'LEAD'
            e.element = 'GOLD';
        case 'GOLD'
            e.element = 'LEAD';
        otherwise
            disp('Oh no! This is a non-transmutable element.');
    end
end
您也可以这样调用该方法:

e = transmute(e)
等于

e = e.transmute
Matlab中的类(或对象)是
属性
方法
的集合

可能令人困惑的是,您的方法
transmute
接受对象(它应该接受),但返回与原始对象具有相同变量名的字符串。它或多或少是一种“获取值”方法。不是变形的物体

通过这种方式,它返回已转换的对象

function e = transmute(e)
    switch e.element 
        case 'LEAD'
            e.element = 'GOLD';
        case 'GOLD'
            e.element = 'LEAD';
        otherwise
            disp('Oh no! This is a non-transmutable element.');
    end
end
您也可以这样调用该方法:

e = transmute(e)
等于

e = e.transmute

非常清楚。事实上,现在这更有意义了!(为什么他们在mathworks页面上没有这么简单的解释…?)对于
的解释非常清楚。事实上,现在这更有意义了!(为什么他们在mathworks页面上没有这么简单的解释…?)对于
酷,他们有这样的解释,谢谢!
开关是否仅在方法中起作用?我也不太明白你的第二段。你所说的“
transmute
接受对象”是什么意思?然后通过“它是[…]一个‘get value of’方法。”?我最初写它的方式产生的结果与你重新写的完全相同。不<代码>开关
是正常的。您有一个名为
transmute
的方法。在输入的右侧,它接受e。这是你的目标。在左边,输出,它输出一个叫做e的东西。在你的例子中是字符串,在我的例子中是对象。(在你的情况下,当它不可转换时,它返回对象。)酷,谢谢!
开关是否仅在方法中起作用?我也不太明白你的第二段。你所说的“
transmute
接受对象”是什么意思?然后通过“它是[…]一个‘get value of’方法。”?我最初写它的方式产生的结果与你重新写的完全相同。不<代码>开关
是正常的。您有一个名为
transmute
的方法。在输入的右侧,它接受e。这是你的目标。在左边,输出,它输出一个叫做e的东西。在你的例子中是字符串,在我的例子中是对象。(在您的情况下,如果不可转换,则返回对象。)