Swift 初学者问题-在本例中为什么要使用嵌套循环?
我在学斯威夫特。我现在和Chris一起学习第5课“初学者快速教程”。我正在完成他准备的所有挑战,但我被困在挑战5中,那就是打印这样的图案:Swift 初学者问题-在本例中为什么要使用嵌套循环?,swift,Swift,我在学斯威夫特。我现在和Chris一起学习第5课“初学者快速教程”。我正在完成他准备的所有挑战,但我被困在挑战5中,那就是打印这样的图案: * ** *** **** ***** var drawPixel:String = "*" var height:Int = 5 var tempRow:String = "" for columnPixel in 1...height { tempRow = "" for _
*
**
***
****
*****
var drawPixel:String = "*"
var height:Int = 5
var tempRow:String = ""
for columnPixel in 1...height {
tempRow = ""
for _ in 1...columnPixel{
tempRow += drawPixel
}
print(tempRow)
}
我不明白为什么我应该使用嵌套循环
根据已完成的质询文件,代码应如下所示:
*
**
***
****
*****
var drawPixel:String = "*"
var height:Int = 5
var tempRow:String = ""
for columnPixel in 1...height {
tempRow = ""
for _ in 1...columnPixel{
tempRow += drawPixel
}
print(tempRow)
}
但是
它的工作方式也应该如此,而且看起来更简单。我理解我的方法(第二个代码),但不是我应该使用的方法我的问题:
columnPixel
在内环中引用,因为内环的迭代次数根据外环的哪个迭代而变化:
- 在外循环的第一次迭代中,内循环只循环一次。构造的字符串是
*
- 在外循环的第二次迭代中,内循环循环两次。构造的字符串是
**
- 在外循环的第三次迭代中,内循环循环三次。构造的字符串是
***
- 等等
columnPixel
随着外部循环的每次迭代而变化。在第一次迭代中它是1,在第二次迭代中它是2,以此类推。这就是为什么我们在内部循环中说“loopcolumnPixel
lots times”
最后,为什么“print(tempRow)”在嵌套循环之外
我们只想打印构造的字符串,而不是在构造字符串时打印。为了让您的问题更清楚,您应该包括所需的代码输出(即,您在挑战5中应该执行的操作)。第一个示例从头创建一个新字符串,以便为外部循环的每次迭代打印,第二个重新使用字符串并修改它。当然,第二个较短,但由于我不知道练习的目的是什么,我不知道这是否意味着更好。我只是编辑了这篇文章,并添加了挑战5的链接-请看一看。:)问题应该是独立的,所以我在中添加了挑战的要求。希望你不介意。没问题,谢谢!非常感谢。我想我现在明白了,但我需要确定一个要素:1。tempRow=”“位于外部循环中,以让编译器知道它应该重复嵌套循环多少次?如果我从外部循环中删除tempRow=“”,控制台每次会多打印四个*(我想是基于嵌套循环的数量?)。我又添加了三个嵌套循环,只是为了检查我的想法是否正确。
tempRow
是存储部分构造行的变量。每次开始构造新行(即,就在内部循环之前)时,都需要去掉由循环的上一次迭代构造的行。这就是tempRow=”“
所做的@kacper3355@kacper3355内部循环需要运行的次数由columnPixel
确定。如果为1,则内部循环运行一次。如果为2,则内部循环运行两次。