Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB中有foreach吗?如果是这样,如果基础数据发生变化,它将如何表现?

MATLAB中是否有foreach结构?如果是这样,如果基础数据发生变化(即将对象添加到集合中),会发生什么?


回答:
MATLAB的FOR循环本质上是静态的;与其他语言中的for(initialization; condition; increment)循环结构不同,您无法在迭代之间修改循环变量。这意味着无论B的值如何,以下代码始终打印1、2、3、4、5。

A = 1:5; for i = A A = B; disp(i); end 如果您希望能够在迭代过程中响应数据结构的变化,则WHILE循环可能更合适---您将能够在每次迭代时测试循环条件,并设置循环变量的值( s)如您所愿:

n = 10; f = n; while n > 1 n = n-1; f = f*n; end disp(['n! = ' num2str(f)]) 顺便说一句,当在迭代过程中修改数据结构时,Java (以及其他语言)中的for-each循环会产生未指定的行为。如果需要修改数据结构,则应使用适当的Iterator实例,该实例允许添加和删除要迭代的集合中的元素。好消息是MATLAB支持Java对象,因此您可以执行以下操作:

A = java.util.ArrayList(); A.add(1); A.add(2); A.add(3); A.add(4); A.add(5); itr = A.listIterator(); while itr.hasNext() k = itr.next(); disp(k); % modify data structure while iterating itr.remove(); itr.add(k); end

更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:58


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.