可视化初学者的循环输入(Swift 3)
熟悉循环对于使用任何语言进行编程都是必不可少的,而且当您刚入门时,事情可能会变得有些混乱。
在本文中,我将提供一些基本示例,这些示例应有助于您直观地了解运行时for-in循环在做什么。 这应该使您更好地了解代码的执行方式以及使用循环的时间。
基本
在第一个示例中,让我们看一个标准的for-in循环。
在此循环中, 索引从1的值开始,并且每次我们迭代for循环直到索引达到5时, 索引都会增加1。
for循环中唯一的语句是print(index) ,它在控制台的新行上打印index的值。 这样我们得到以下控制台输出。
与其将这些数字打印到控制台,不如将它们添加到阵列中。
在这里,我们从一个名为myArray的空数组开始,然后使用append(index)方法将index的值添加到myArray中 。 每次我们迭代for循环时都会调用append()方法……因此我们将索引值相加5次。
若要查看实际效果,请在for循环内添加print(myArray) 。 我们可以通过for循环的每次迭代来观察myArray的状态!
对于通过for循环的每次迭代, 索引值 被附加到myArray的末尾,然后打印到控制台。
嵌套循环
当您在一个循环中放置一个循环时,这称为嵌套循环。 在编码时,它并不总是最有效的解决方案,但在浏览或创建新集合时可能很有用。
当您运行具有嵌套循环的程序时,很难准确地分辨出每个循环在做什么以及何时执行。 希望这些示例将帮助您可视化for循环如何构建或移动数据。
看一下下面的字符串数组 。
blueEmojis包含5个(精心选择的)蓝色emoji表情, redEmojis包含3个(完全随机)红色emoji表情。 让我们使用一个for循环从我们丰富多彩的集合中制作字符串。
在这里,我们声明了一个变量,它将保存我们的表情符号字符串。 在它的下面,我们有了第一个for循环,以循环访问blueEmojis Array 。
emojiString以空白字符串开头。 使用for循环,我们可以在其中附加表情符号!
接下来让我们分解一下for循环〜
blueEmoji (否)表示blueEmojis 数组中的单个值。 blueEmoji以blueEmojis中第一项的值开头 ,并使用.append(blueEmoji)将其附加到emojiString中。 它遍历数组,直到所有值都被迭代为止。
让我们看看如果在循环中添加print()函数会是什么样子。
如您所见, blueEmojis数组中的每个表情符号都已添加到emojiString中并打印到控制台 每次我们迭代for循环时。
现在让它嵌套在redEmojis 数组的另一个for循环中, 并带有自己的append()和print() ,看看会发生什么!
如果我们查看控制台,可以看到在添加第二个blueEmoji之前,所有三个redEmojis都已添加到字符串。 这意味着在blueEmoji for循环可以完成一次迭代之前, redEmoji for循环必须完成其所有3次迭代。
即使我们在循环中添加了一个较小的数组,我们仍在创建更多数据。
redEmoji for循环比blueEmoji for循环多3 倍 。
让我们将print()函数移到循环之外,以便在循环完成后可以看到字符串。
为了使字符串更具可读性,我们可以在blueEmoji for循环的底部添加.append(“ \ n”) 。 每当blueEmoji for循环迭代时,这都会在字符串中创建一个换行符。
现在我们可以清楚地看到,每个单独的蓝色表情符号都打印了3个红色表情符号。
此gif直观地演示了序列。
**注意 : var emojiString:String =“” 的声明 不会在您的代码中以这种方式更改-此gif中 声明之后的 emoji字符串 仅是表示内存中字符串值的设备。
让我们看看redEmoji里面嵌套blueEmoji的样子。
相反! 现在,在redEmojis 数组中为每个单独的redEmoji打印了blueEmojis中的所有5个值
现在让我们添加一个新的yellowEmojis数组。
对于每一个红色表情符号,我们都有五个蓝色和25个黄色表情符号!
yellowEmoji数组迭代了75次! 您会发现,随着嵌套的深度越来越大,迭代次数呈指数增长!
您可能还会注意到,每个红色表情符号在我们的字符串中仅出现一次。 每个蓝色表情符号重复3次,黄色重复15次(每3条鲸鱼和1只螃蟹有15个照明螺栓)。 这有道理…对吗? 🙂
循环可能是检查数据或创建值的不错选择,但循环会很快变得效率低下。 看看对杰克做了什么…