【发布时间】:2015-11-02 23:50:25
【问题描述】:
我写了一个基本的类定义如下:
classdef player
properties
team
name
rating
ranking
end
methods
end
end
我得到了一个名为allPlayers 的玩家对象元胞数组,其中除了排名之外的每个字段都已设置。然后我在上面调用下面的函数:
function setRankings(players)
for i = 1 : length(players)
players{i}.ranking = i;
end
end
此时,应该设置每个播放器对象的所有字段。我调用下面的函数来显示每个字段:
function displayPlayers(players)
for i = 1 : length(players)
current = players{i};
disp(['Name: ', current.name]);
disp(['Team: ', current.team]);
disp(['Rating: ', current.rating]);
disp(['Ranking: ', current.ranking]);
end
end
不幸的是,每个玩家都打印如下(只是一个例子):
'Name: ' 'Shleifer,Sam'
Team: Yale
'Rating: ' '5.050000'
Ranking:
所以看起来排名字段实际上并不是由setRankings 设置的。
这是为什么?
【问题讨论】:
-
排名未设置,因为
player是一个值类,而不是句柄,并且您没有从函数返回修改后的对象。区别的简要说明是available here。 -
我很荣幸成为这个问题的一部分
标签: matlab