Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
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 更多&回答... |
![]() |
![]() |