我是编程的新手,除了使用Matlab的基本功能多年(操纵数组,线性代数,函数,脚本等),并且最近开始探索程序的面向对象方面(这也是我第一次进入任何面向对象的编程!)。
我现在最大的问题是理解这个点符号意味着什么。例如,假设我写了简单的类
classdef alchemy
properties
element
end
methods
% CONSTRUCTOR
function e = alchemy
e.element = ' ';
end
end
end
e.element
实际意味着什么?然后输入命令行
e.element = 'LEAD'
将字符串'LEAD'
分配给类element
的属性alchemy
的一个实例....为什么要这样做?
现在说我添加方法
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的帮助页面都没有给我任何更深刻的印象。任何帮助将不胜感激!
答案 0 :(得分:2)
点表示法用于对象的属性/属性或用于调用方法。
它有两个含义。
name_object.abc
如果abc是name_object的属性,将给你abc的值,或者如果abc是一个方法,它将在name_object上调用abc。
答案 1 :(得分:0)
Matlab中的类(或对象)是properties
和methods
的集合。
可能令人困惑的是你的方法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